2013-12-06 3 views
0

Я узнаю про простую проверку формы javascript, и мне просто интересно, почему моя проверка электронной почты не работает. Я пытаюсь захватить информацию из поля ввода электронной почты и запустить мою функцию с помощью RegEx. Любая помощь будет оценена по достоинству.проверка электронной почты с помощью javascript

скрипку демо: http://jsfiddle.net/6SWj4/

(function(){ 


     var emailAddr = document.getElementById("f_email").value; 
     console.log(emailAddr); 

    // console.log(email.test(str)); 
    // 
    // if(email.test(str) == true){ 
    //  console.log("true"); 
    // }else{ 
    //  console.log("false"); 
    // } 

     myform.onsubmit = function(e){ 

      //Below is one example of the validateField call with an argument. 
      //You must dynamically retrieve the ID name from the DOM/HTML. 

      validateField(emailAddr); //id = is the form input field ID 


      e.preventDefault(); 
      return false; 
     }; 


     var validateField = function(inputName){ 

      if (inputName.name === 'f_email'){ 
       var pattern = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
       var emailVal = new RegExp(pattern); 
       //You will need to create an else-if statement for each input field id. The 
       //  format will be similar to the above IF statement. 


      }else{ 
       console.log("not valide"); 
      } 

      var pass = emailVal.test(inputName); 
      console.log(pass); 

      var errorMsg = inputName.nextSibling.nextSibling.nextSibling.nextSibling; 

      if (!pass || inputName.value.length < 2){ 
       errorMsg.style.display='block'; 
       inputName.style.backgroundColor = 'red'; 
      } else if (pass && inputName.value.length > 5){ 
       errorMsg.style.display='none'; 
       inputName.style.backgroundColor = 'green'; 
      } else { 
       errorMsg.style.display='none'; 
       inputName.style.backgroundColor = 'white'; 
      }; 
     }; 

    })(); // end wrapper 
+0

'моя проверка электронной почты не работает', как она не работает? Он генерирует сообщения об ошибках? Это просто ничего не делает? «Не работает» просто не работает для хорошего вопроса. –

+1

Ваша проверка подлинности по электронной почте действительно не должна быть более сложной, чем «Имеет ли в ней символ @»? Если да, то отлично - отправьте им электронное письмо, включая ссылку, которую они затем используют, чтобы подтвердить, что адрес электронной почты является действительным (и что они на самом деле владеют им). Вы удивляетесь, сколько человек подписывается на вещи с адрес электронной почты, который не принадлежит им). Тем не менее ... var var = emailVal.test (inputName); 'вероятно, должно быть' var pass = emailVal.test (inputName.value); '- вам нужно передать его значение, а не фактический элемент ввода. –

+0

Извините, я не уточнил. Синтаксических ошибок нет. Проблема даже в том, что я вводил правильный адрес электронной почты в поле, возвращается с ошибкой. Я думаю, потому что я не получаю строку из поля ввода. – user3072159

ответ

0

Ваша проблема связана с получением значения на входе при загрузке страницы, а не после того, как пользователь ввел что-нибудь. Попытка:

myform.onsubmit = function(e){ 

     /* get value withing submit handler*/ 

     var emailAddr = document.getElementById("f_email").value; 
     console.log(emailAddr); 

     //Below is one example of the validateField call with an argument. 
     //You must dynamically retrieve the ID name from the DOM/HTML. 

     validateField(emailAddr); //id = is the form input field ID 


     e.preventDefault(); 
     return false; 
    }; 

Искоренение ошибок в validateField(). Аргумент ожидается inpuname, но вы передаете входное значение электронной почты

0

У вас есть много ошибок в коде. Сначала, что я сказал вам в комментариях, вы должны сделать document.getElementById("f_email").value; внутри функции onsubmit. Вы также объявляете переменные внутри чего-то и используете его из него, например emailVal, который вы объявляете внутри if. Это не сработает, вы должны объявить его до if. проверьте с помощью javascript консоли эти небольшие ошибки.

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