使用jQuery Validate无法验证maxlength的文本输入

时间:2010-07-29 17:18:49

标签: jquery jquery-validate

我遇到了使用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,但这不是我喜欢的。

那么,有人吗?谢谢!

3 个答案:

答案 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});