Простой jQuery валидатор addMethod не работает



Обновленный вопрос на дне



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

В настоящее время у меня есть этот скрипт:



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 и ответить: "используйте действительное имя пользователя.- если бы я поместил "Боба" в Книгу ... форма.



Однако он просто представляет его.

Я связываюсь с JQuery перед валидатором в заголовке, Как указано.



Моя простая форма uber выглядит так:



<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, чтобы вернуть true if и false на этапе else, сохраняя при этом предупреждение сообщения для возврата false?
(проигнорируйте эту последнюю часть, если вы не понимаете, что я пытался сказать :))



Спасибо. продвижение.





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



Новый -> регулярное выражение в jQuery Validator addMethod



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



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

Edit



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

642   3  

3 ответов:

Вы используете 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 первом.

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

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

Попробуйте с

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

См. демо-версия

Comments

    Ничего не найдено.