我有一个带有两个数字输入的表单,比如说 input1 和 input2。
我想要以下验证规则:
- R1: input2 <= input1 * 0.2(当 input1 或 input2 值改变时触发)
- R2:输入1 <10
暂时忘记 R2 并查看以下代码:
<input id="input1" class="validation1"/>
<input id="input2" class="validation2"/>
$.validator.addMethod("validation2", function (value, element) {
var v = Globalize.parseFloat(value);
var l = Globalize.parseFloat($('#input1').val());
return !l || !v || v <= l*0.2;
}, "Error");
$.validator.classRuleSettings.validation2= { validation2: true };
$.validator.addMethod("validation1", function (value, element) {
var validator = $("form").validate();
validator.element($('#input2'));
return true;
}, "should never be shown");
$.validator.classRuleSettings.validation1= { validation1: true };
这段代码工作得很好。当 input1 或 input2 更改时,将调用 input2 的验证。
所以让我们通过编辑validation1来添加R2:
$.validator.addMethod("validation1", function (value, element) {
var validator = $("form").validate();
validator.element($('#input2'));
var v = Globalize.parseFloat(value);
return v && v<10;
}, "Input1 must be less than 10");
此代码按预期工作,但是一旦将 input1 设置为大于 10,它就会变为红色,并且当值更改为 <10 时它也会保持红色。
任何的想法?