Простой 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 в мою функцию проверки. Однако, регулярные выражения все еще не работает и, насколько я могу судить, это правильно.
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