2015-02-01 3 views
4

Я пытаюсь устранить неполадки и исправить, почему моя проверка электронной почты работает неправильно. Предполагается обнаружить недействительный адрес электронной почты: там, где у него было слишком много ... (точек), по-прежнему за исключением европейского адреса ([email protected]), а также [email protected] Но на данный момент это за исключением того, что одна точка, если вы не закончите печатать, если у нее есть @, пока вы не добавляете (.) Точку. Кто-нибудь, пожалуйста, помогите мне с тем, где я ошибаюсь?jQuery Validation Вопросы проверки электронной почты

<script> 
    $("#form").validate({ 
    rules: { 
     firstname_1: { 
      required: true 
     }, 
     email_1: { 
      required: true, 
      email: true 
     }, 
     // Same for other fields 
    }, 
    messages: { 
     firstname_1: "This field is required.", 
     email_1>: "Please enter valid email address.", 
     // Repeat for other fields 
    } 
}); 
function isValidEmail(email_1) 
{ 
    return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email_1) 
     && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email_1); 
} 
</script> 
+0

http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/ –

+1

Не существует жесткого ограничения количества адресов электронной почты или домена '.' имя может содержать. Что вы пытаетесь достичь? –

+0

Эти адреса являются технически обоснованными, даже если они не существуют. Единственный способ по-настоящему проверить адрес электронной почты - отправить ему электронное письмо с уникальным токеном и дать ответ пользователю (обычно, нажав ссылку). –

ответ

7

Предполагая, что у вас уже есть правильное регулярное выражение, то вам нужно будет создать собственное правило с помощью the .addMethod() method.

$("#form").validate({ 
    rules: { 
     firstname_1: { 
      required: true 
     }, 
     email_1: { 
      required: true, 
      myEmail: true // <- declare your custom rule 
     }, 
     // Same for other fields 
    }, 
    messages: { 
     firstname_1: "This field is required.", 
     email_1: "Please enter valid email address.", 
     // Repeat for other fields 
    } 
}); 

// create your custom rule 
jQuery.validator.addMethod("myEmail", function(value, element) { 
    return this.optional(element) || (/^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(value) && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(value)); 
}, 'Please enter valid email address.'); 

Примечание: Вы также имели ошибку синтаксиса/написание на имя поля в messages. Должно быть email_1, а не email_1>.

Смежные вопросы