Текстовые вводы с максимальной длиной не проверяются с помощью jQuery Validate - PullRequest
7 голосов
/ 29 июля 2010

У меня возникла проблема с использованием jQuery Validate. Дело в том, что у меня есть несколько текстовых полей с установленными атрибутами maxlength. Хотя они не являются обязательными, они все равно не могут быть проверены, когда они пусты или пропущены.

Пример HTML:

<input type="textbox" id="tbx1" maxlength="100" value="" />

Затем $('#tbx1').valid() возвращает false. Не должно ли оно вернуть true вместо этого? Есть ли какие-либо известные обходные пути для этого?

Да, и добавление $('#myform').validate({ ignore: '#tbx1' }); мне не совсем подходит, потому что я использую элементы управления ASP.NET с их автоматическими идентификаторами. Я знаю, что мог бы использовать идентификатор клиента элемента управления или что-то вроде IDOverride Уилко, но это не то, что я предпочитаю.

Итак, кто-нибудь? Спасибо!

Ответы [ 3 ]

18 голосов
/ 30 сентября 2011

Это похоже на ошибку в этом плагине. Если это исправить, заменив метод пользовательской реализацией, используя следующий код:

$.validator.addMethod("maxlength", function (value, element, len) {
   return value == "" || value.length <= len;
});
3 голосов
/ 25 августа 2011

Сам столкнулся с этой проблемой в некоторых сложных формах, которые я писал ...

Мое решение - просто создать свой собственный метод 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
        }
 }
0 голосов
/ 14 марта 2011

Во-первых, я предполагаю, что вход имеет атрибут "name" и просто не показан в вашем примере?Если нет, попробуйте это, и это может решить проблему.

Во-вторых, пытались ли вы явно указать, что поле не обязательно, но имеет максимальную длину в объекте валидатора?Например:

var rules = {
  'txtbx1': {
    required: false,
    maxlength: '100'
  }
};

$('#formId').validate({rules:rules});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...