2013-05-09 2 views
0

Я нашел подтверждение электронной почты в jquery, которое отлично работает самостоятельно. Теперь я добавил его к другим функциям для проверки флажков и пустых полей. полный код здесь: http://jsfiddle.net/vUAGs/4/jQuery проблема с проверкой электронной почты

 function validateEmail(email) { 
     var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
     if(!emailReg.test(email)) { 
     add_color(email, 'orange'); 
     return false; 
     } else { 
     add_color(email, white); 
     return true; 
     } 
    } 

форма до сих пор не возвращаются в силе, даже если адрес электронной почты является действительным.

+0

у вас есть пример его работы отлично? –

+0

Ну, тот, который я опубликовал выше, работает, однако я должен делать что-то неправильно, когда проверяю, проверяются ли все поля validate (return true) ... – Alex

+0

не существует кода jQuery, участвующего в проверке адреса электронной почты. – Ejaz

ответ

2

Я сделал некоторые изменения на скрипке, и теперь он работает .... Вы можете уточнить код;)

HTML:

<input class="email_val" type="email" id="emailin" value=""/> 

JS:

function validate_form(){ 

     $('form input:not(.checkbox_wrapper input, .email_val), textarea').each(function(){ 
      if ($(this).val() == '') { 
       add_color($(this), red); 
      } 
      else { 
       add_color($(this), white); 
      } 

     }); 
     var emailin = $('#emailin').val(); 
     return (validateEmail(emailin) && check_Radio_Checkb() && true); 

    } 


function validateEmail(emailin) { 

     var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    alert(regex.test(emailin)); 

     if(!regex.test(emailin)) { 
     add_color(email, 'orange'); 

     return false; 
     } else { 
     add_color(email, white); 

      return true; 
     } 

    } 

Смотрите worrking скрипку здесь: http://jsfiddle.net/vUAGs/9/

1

Вы передаете объект jQuery для проверки правильности Email, а не адреса электронной почты.

function validate_form(){ 

     $('form input:not(.checkbox_wrapper input, .email_val), textarea').each(function(){ 
      if ($(this).val() == '') { 
       add_color($(this), red); 
      } 
      else { 
       add_color($(this), white); 
      } 

     }); 
        //    V right here 
     return (!validateEmail(email.val()) && check_Radio_Checkb() && true); // Notice change here 

    } 

Внесите это изменение и оно начнет работать.

0

Поскольку вы проходите поле ввода, вам все равно нужно получить значение поля ввода.

демо: http://jsfiddle.net/tive/vUcVa/

также вы можете сократить вашу функцию, как это при объявлении emailReg глобальной внутри области видимости функции:

function validateEmail(email) { 
    var isValid = emailReg.test(email.val()); 
    if (!isValid) { 
     add_color(email, 'orange'); 
    } else { 
     add_color(email, "green"); 
    } 
    alert(isValid); 
    return isValid; 
} 

сделать примечание, что оператор возврата в вашей validate_form() функции не нужен инвертируйте, как вы. Читает немного лучше ^^

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