Простой JQuery Validator addMethod не работает - PullRequest
3 голосов
/ 08 марта 2011

Обновленный вопрос внизу

Я пытаюсь проверить супер простую форму.В конце концов, имя пользователя будет сравниваться с оператором RegExp, и то же самое будет с паролем.Однако сейчас я просто пытаюсь изучить формат addMethod Validator.

У меня есть этот скрипт:

JQuery.validator.addMethod(
    "legalName",
    function(value, element) {
        if (element.value == "bob")
        {
            return false;
        }
        else return true;
    },
    "Use a valid username."
);

$(document).ready(function() {
    $("#form1").validate({
        rules: {
            username: {
                legalName: true
            }
        },
    });
});

, который, если я не ошибаюсь, должен вернуть false и ответить «Использоватьдействительное имя пользователя. "если бы я поместил «bob» в форму.

Однако это просто отправка.

Я ссылаюсь на JQuery BEFORE Validator в заголовке, как указано в инструкции.

Моя простая форма выглядит следующим образом:

<form id="form1" method="post" action="">
  <div class="form-row"><span class="label">Username *</span><input type="text" name="username" /></div>
  <div class="form-row"><input class="submit" type="submit" value="Submit"></div>
</form>

Наконец, как бы я реструктурировал функцию addMethod для возврата истинных if и false на этапе else, сохраняя при этом сообщение для оповещения оfalse возврат?(игнорируйте эту последнюю часть, если вы не понимаете, что я пытался сказать :))

Заранее спасибо.


Спасибо всем, кто указал на мои JQuery -> jQuery опечатка.

Новый -> RegEx в jQuery Validator addMethod

В идеале я пытаюсь превратить это в простой логинФорма (имя пользователя / пароль).Он предназначен только для демонстрации, поэтому к нему не будет прикреплена база данных или что-то еще, только некоторые простые проверки JS.Я хочу, чтобы имя пользователя было проверено на <48 символов, только английские буквы и цифры, без специальных символов.Я думал, что белый список будет проще, поэтому у меня было что-то вроде этого: <code>^[a-zA-Z0-9]*${1,48}, но я не уверен, что это правильный JS RegExp (он отличается от Ruby RegExp, если я не ошибаюсь? ... Обычно я использую rubular.com),Пароль будет похожим, но потребуется несколько прописных / строчных букв и цифр.

Мне кажется, мне нужно сделать еще один $.validator.addMethod для legalPassword, который будет очень похож.

Редактировать

изменил регулярное выражение на ^[a-zA-Z0-9]+$ и добавил maxlength: 48 к моей функции проверки.Однако регулярное выражение все еще не работает, и, насколько я могу судить, это правильно.

Ответы [ 3 ]

4 голосов
/ 08 марта 2011

Вы используете JQuery, а не jQuery (мало j).

JavaScript чувствителен к регистру ...

>>> typeof jQuery
"function"
>>> typeof JQuery
"undefined"

Если $ указывает на вашjQuery объект тоже (это по умолчанию), тогда вы можете просто использовать его.

Что касается вашей пользовательской функции проверки, вы можете сделать этот терьер примерно так ...

jQuery.validator.addMethod(
    "legalName",
    function(value, element) {
        return (element.value != "bob");
    },
    "Use a valid username."
);

Для сравнения без учета регистра введите toLowerCase() в начале value.

1 голос
/ 08 марта 2011

Мне удалось исправить первую часть, просто изменив JQuery.validator.addMethod на $.validator.addMethod.

Я не совсем понимаю ваш второй вопрос. Если вы опишите поведение, в котором вы заинтересованы, возможно, я смогу вам помочь.

0 голосов
/ 08 марта 2011

попробуй с

jQuery.validator.addMethod("legalname", function(value, element) {
    var i = /^bob$/i;
    return (!(i.test(value)));
}, "Invalid user name");

см. ДЕМО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...