2015-06-18 2 views
0

Я использую jQuery Validator для обработки простой формы. Все работает так, как должно, но я хотел бы немного изменить процесс проверки. Я включил небольшой запрос Ajax, чтобы проверить, существует ли уже введенное письмо в БД. Ответ будет 1 в случае, если письмо уже существует или 0 в противном случае. Я заметил, что label тег создается под input поле в случае электронной почты не является действительным:jQuery Validator - переопределить сообщение проверки для логического ответа с сервера

<label id="email-error" class="error" for="email">This field is required.</label> 

Можно переопределить генерироваться ярлык (после того, как jQuery Validator уже подтверждено, что при условии электронной почты является действительным) , чтобы указать, существует ли это письмо в БД или нет?
Предположим, для 1 генерируемый label будет выглядеть следующим образом:

<label id="email-error" class="error" for="email">This Email is already in use.</label> 

Это текущая конфигурация валидатора:

var $validator=$("#form-register").validate({ 
rules:{ 
    email:{ 
    required: true 
    } 
    } 
}); 

Это HTML форма:

<form id="form-register" class="p-t-15" role="form"> 
    <div class="form-group form-group-default" id="email_div"> 
     <label>What's your email address?</label> 
     <div> 
     <input type="email" class="form-control" name="email" id="email" placeholder="Email">  
     </div> 
    </div> 
</form> 
+0

Я определенно уверен, что там должен быть 'remote' вариант для этого! –

+0

Вам не нужно было бы связываться с сообщением об ошибке для 'required' .... вы бы ... 1. Используйте метод' remote' или 2. Используйте метод 'addMethod()', чтобы написать свое собственное правило. Я рекомендую №1. – Sparky

ответ

1

Вы можете использовать опцию remote здесь:

$("#form-register").validate({ 
    rules: { 
    email: { 
     required: true, 
     email: true, 
     remote: "check-email.php" 
    } 
    } 
}); 

Делает нужное поле электронной почты, электронное письмо и делает удаленный запрос, чтобы проверить, действительно ли данный адрес уже сделан. Кроме того, метод http установлен на «post», а имя пользователя отправляется вместе с адресом электронной почты.

$("#form-register").validate({ 
    rules: { 
    email: { 
     required: true, 
     email: true, 
     remote: { 
     url: "check-email.php", 
     type: "post", 
     data: { 
      email: function() { 
      return $("#email").val(); 
      } 
     } 
     } 
    } 
    } 
}); 
Смежные вопросы