我有一个带有两个数字输入的表单,比如input1和input2。
我希望有以下验证规则:
暂时忘记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时,它也会保持红色。
有什么想法吗?
答案 0 :(得分:0)
我无法让您的代码在jsFiddle:http://jsfiddle.net/TcpnH/
中运行也许你可以构建一个jsFiddle。
有些说明:
1)重要提示:所有输入必须包含name
属性,否则此插件将无法按预期运行。即使你没有将name
用于jQuery中的任何其他内容,它仍然是必需的。
<input id="input1" name="input1" class="validation1" />
2)如果input1
必须小于10,为什么要为此创建一个全新的方法?只需使用内置的max
方法/规则即可。 max: 10
3) $.validator.classRuleSettings.validation1= { validation1: true };
我在the documentation中没有看到classRuleSettings
任何地方,也没有看到目的。
通常,自定义方法/规则将作为class
添加到您已经完成的元素上:
<input id="input1" class="validation1" />
否则,宣布为规则:
$('form').validate({
rules: {
myfieldname: {
validation1: true
}
}
});