我遇到了使用jQuery Validate的问题。问题是我有几个文本框,其maxlength
属性设置。虽然它们不是必需的,但它们仍无法验证何时为空或空格。
示例HTML:
<input type="textbox" id="tbx1" maxlength="100" value="" />
然后,$('#tbx1').valid()
返回false
。它不应该返回true
吗?是否有任何已知的解决方法?
哦,添加$('#myform').validate({ ignore: '#tbx1' });
并不适合我,因为我正在使用带有自动ID的ASP.NET控件。我知道我可以使用控件的客户端ID或类似Wilco的IDOverride,但这不是我喜欢的。
那么,有人吗?谢谢!
答案 0 :(得分:18)
这似乎是这个插件中的一个错误。 如果使用以下代码通过自定义实现替换方法来修复它:
$.validator.addMethod("maxlength", function (value, element, len) {
return value == "" || value.length <= len;
});
答案 1 :(得分:3)
在我写的一些复杂的表格中,我自己也遇到了这个问题......
我的解决方案就是创建我自己的maxlength方法,我可以'maxLen'几乎完全像默认方法,只是在不同的名称下。只需将其粘贴在主要验证调用上方($(“#mainform”)。validate({});或者调用任何表单。
//Custom Max Length Validation
jQuery.validator.addMethod("maxLen", function (value, element, param) {
//console.log('element= ' + $(element).attr('name') + ' param= ' + param )
if ($(element).val().length > param) {
return false;
} else {
return true;
}
}, "You have reached the maximum number of characters allowed for this field.");
完成后,您可以像这样添加规则:
rules: {
Message: {
required: false,
maxLen: 200
}
}
答案 2 :(得分:0)
首先,我假设输入具有“name”属性,并且在您的示例中根本没有显示?如果没有,请尝试,这可能会解决问题。
其次,您是否尝试过明确地将字段设置为不需要但在验证器对象中具有maxlength?例如:
var rules = {
'txtbx1': {
required: false,
maxlength: '100'
}
};
$('#formId').validate({rules:rules});