jQuery表单validationaddmethod以多种forms

简短描述:具有~30个表单的页面,使用自定义方法validationjQueryvalidation插件(将字段1与字段2进行比较并确保字段2> =字段1)。

我基本上有这个问题,除了每页有30个表单而不仅仅是2.我认为我可以使用类标记,以便validation插件获取与它validation的forms相同的输入 – 但它总是用于即使在validation第二种forms时,也是第一种forms的。

有没有办法让这项工作没有为每个表单单独的validation脚本?

jsfiddle html代码如下:

Start : 1 1.5 2
Stop : 1 1.5 2
Start : 1 1.5 2
Stop : 1 1.5 2

这里的js:

 jQuery.validator.addMethod("stop_boet_start", function () { return (parseFloat($(".dayStop").val()) >= parseFloat($(".dayStart").val())); }, "* error_msg"); $("#test").validate({ rules: { stop: { stop_boet_start: true } } }); $("#test2").validate({ rules: { stop: { stop_boet_start: true } } }); 

为了找到正确的dayStart和dayStop元素,您可以使用以下内容:

 jQuery.validator.addMethod("stop_boet_start", function (value, element, params) { var form = $(element).closest("form"); var dayStop = form.find(".dayStop"); var dayStart = form.find(".dayStart"); return (parseFloat(dayStop.val()) >= parseFloat(dayStart.val())); }, "* error_msg"); $("#test").validate({ rules: { stop: { stop_boet_start: true } } }); $("#test2").validate({ rules: { stop: { stop_boet_start: true } } }); 

由于stop字段具有公共类,因此您可以使用addClassRule()向所有这些元素添加规则。

 jQuery(function ($) { jQuery.validator.addMethod("stop_boet_start", function () { return (parseFloat($(".dayStop").val()) >= parseFloat($(".dayStart").val())); }, "* error_msg"); jQuery.validator.addClassRules("dayStop", { stop_boet_start: true }); $("form").validate({}); }); 

演示: 小提琴

或者遍历表单列表添加添加规则之类的

 $(".test").each(function () { $(this).validate({ rules: { stop: { stop_boet_start: true } } }); }) 

演示: 小提琴