Jquery form validate plugin: поле 1 не равно полю 2
heyho,
Я застрял в следующей проблеме: я стараюсь, чтобы пользователь не мог выбрать для полей "имя пользователя" и "по электронной почте" те же значения. Я использую плагин проверки формы jquery (http://bassistance.de/jquery-plugins/jquery-plugin-validation/)
было бы здорово, если бы кто-нибудь мог показать мне дорогу, см. мой код здесь:
// validate form
$("#signupform").validate({
rules: {
username: {
required: true,
minlength: 2,
remote: "/_misc/formcheck/username.cfm"
},
password1: {
required: true,
minlength: 5
},
password2: {
required: true,
minlength: 5,
equalTo: "#password1"
},
email: {
required: true,
email: true,
remote: "/_misc/formcheck/email.cfm"
},
email2: {
required: true,
email: true,
equalTo: "#email"
},
usage: "required"
},
messages: {
username: {
required: "please username!!",
minlength: "username at least 2 chars"
},
password1: {
required: "please password!",
minlength: "password at least 5 chars"
},
password2: {
required: "please password",
minlength: "password at least 5 chars",
equalTo: "password fields have to match"
},
email: "validate email please!",
email2: {
required: "please provide correct email address!",
equalTo: "email fields must match!"
},
usage: "please check my terms!"
},
спасибо заранее, michbeck
Ответы
Ответ 1
Вы можете добавить настраиваемый метод проверки значений имени пользователя и электронной почты и добавить подтверждение для этого поля.
Демо - http://jsfiddle.net/2hA8M/8/
Пример -
Метод -
$.validator.addMethod("user_email_not_same", function(value, element) {
return $('#name').val() != $('#email').val()
}, "* User and Email should not match");
Валидация -
rules : {
username : {
user_email_not_same: true
}
},
Ответ 2
Это может быть более гибким:
$.validator.addMethod("notEqualTo", function (value, element, param)
{
var target = $(param);
if (value) return value != target.val();
else return this.optional(element);
}, "Does not match");
Вызов:
rules: {
username: {
required: true,
minlength: 2,
remote: "/_misc/formcheck/username.cfm",
notEqualTo: "#emailId-or-anyValidJquerySelector"
}
}
Пример: http://jsfiddle.net/4AdWR/1/
Или прямо в Html:
<input type="text" name="username" notEqualTo="#emailId-or-anyValidJquerySelector" minlength="2" class="required" />
Пример: http://jsfiddle.net/B2hWn/1/
И это также относится к требуемым/необязательным предыдущим проверкам;)