Подтвердить что ты не робот

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

4b9b3361

Ответ 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/

И это также относится к требуемым/необязательным предыдущим проверкам;)