我正在尝试为jQuery编写一个“Less than”验证器。我想比较一个文本框和另一个文本框,所以如果我有:
<input type="text" id="value1" /> <input type="text" id="value2" />
我希望我的验证器看起来像
$('#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或只是在标签中?
答案 0 :(得分:14)
$.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的验证。
答案 1 :(得分:1)
我认为你可以在不编写自己的验证方法的情况下做到这一点。
$('#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());
});
答案 2 :(得分:1)
您可以在任何文档就绪块中插入验证方法,如下所示。
$().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更灵活。
在您的验证器中,您正确使用它;所以对于说法的验证,少于10:
$('#myForm').validate({ rules: { value1: { lessThan: "10"}} });
祝你好运!
答案 3 :(得分:0)
我认为最好使用HTML max
属性。
<input type="number" placeholder="Marks" required name="marks" max="100">
验证将是,请输入一个小于或等于100的值。此外,对于小于100的值,您还可以将最大值更改为99。
答案 4 :(得分:0)
考虑(A)是您希望其值小于(#B)输入的输入的名称。
在确定两个输入的类型之后,此代码与我一起使用了:type="number"
$("#form").validate({
rules: {
A: {
lessThan: "#B"
}
}
});