jQueryvalidation不到

我正在尝试为jQuery编写一个“小于”的validation器。 我想比较一个文本框和另一个文本框,所以如果我有:

  

我希望我的validation器看起来像

 $('#myForm').validate({rules: { value1: { lessThan: "#value2" } } }); 

我试过这个,但我无法让它工作:

 $.validator.addMethod('lessThan', function(value, element, param) { var i = parseInt(value); var j = parseInt($(param).val()); return i >= j; }, "Less Than"); 

另一个问题是我应该在哪里放置该代码? 在$(文件).ready或只是在标签中?

我是个白痴。 我在我的实际代码中做了一些拼写错误,我搞砸了我在很多validation方法中看到的this.optional(元素)。 这是工作function:

 $.validator.addMethod('lessThanEqual', function(value, element, param) { if (this.optional(element)) return true; var i = parseInt(value); var j = parseInt($(param).val()); return i <= j; }, "The value {0} must be less than {1}"); 

这是精简版

 $.validator.addMethod('lessThanEqual', function(value, element, param) { return this.optional(element) || parseInt(value) <= parseInt($(param).val()); }, "The value {0} must be less than {1}"); 

现在我需要弄清楚当我更改field2时如何重新运行字段1的validation。

我认为你可以做到这一点,而无需实际编写自己的validation方法。

 $('#myForm').validate({ rules: { value1: { maxlength: $('#value2').val().length } } }); $('#value2').change(function() { $('#value1').rules('remove', 'maxlength').rules('add', { maxlength: $('#value2').val().length }); }); 

甚至更好,没有代码重复

 function getRule() { return { maxlength: $('#value2').val().length }; } $('#myForm').validate({ rules: { value1: getRule() } }); $('#value2').change(function() { $('#value1').rules('remove', 'maxlength').rules('add', getRule()); }); 

您可以在任何文档就绪块中插入validation方法,如下所示。

 $().ready(function() { $.validator.addMethod("lessThan", function(value, element, param) { var i = parseFloat(value); var j = parseFloat(param); return (i < j) ? true : false; } ); }); 

我试图保持这个简单,以便你可以修改它。 如果该方法被称为“lessThan”,那么它应该这样做。 如果您的方法实际执行“小于或等于”,请考虑更合适的名称。

请注意,我也使用parseFloat,允许该方法比parseInt更灵活。

在您的validation器中,您正确使用它; 所以对于说法的validation,小于10:

 $('#myForm').validate({ rules: { value1: { lessThan: "10"}} }); 

祝好运!