2011-12-23 4 views
2

Имея проблемы с моим кодом проверки электронной почты. Я продолжаю получать ошибку, что моя функция не определена. Я сделал javascript-файл для java-кода, а затем я использовал onchange в своем html для запуска функции.Email validator

<input type="text" id="email" name="email" onchange="check();" /> 

    function check() { 
email = document.getElementById("email").value; 
filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
if (filter.test(email.value)) 
    { 
    document.getElementById("email").style.border = "3px solid green"; 
    return true; 
    } 
else 
    { 
    document.getElementById("email").style.border = "3px solid red"; 
    return false; 
    } 
} 
+1

С каких пор '+' недопустимый символ в адресах электронной почты? И почему у TLD не может быть более 4 символов? – Quentin

+0

+1 от меня. Не нужно понижать голос. OP спрашивает, почему возникает ошибка javascript, которая даже не вызвана регулярным выражением. –

+0

Извините, я все еще не привык к тому, что мне нужно отправить вопрос – MunLau

ответ

3

Положите ваш javascript в <script> тегах.

Также переименуйте свое имя переменной email, так как ваше текстовое поле уже использует его.

<input type="text" id="email" name="email" onchange="check();" /> 
<script type="text/javascript"> 
    function check() { 
     var email_x = document.getElementById("email").value; 
     filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     if (filter.test(email.value)) { 
      document.getElementById("email").style.border = "3px solid green"; 
      return true; 
     } else { 
      document.getElementById("email").style.border = "3px solid red"; 
      return false; 
     } 
    } 
</script> 
1

Проверка подлинности электронной почты не всегда так проста, как ваше регулярное выражение. Вы смотрели:

Validate email address in JavaScript?

Лучшим вариантом было бы использование Verimail.js. Это простой скрипт, который заботится о нем для вас. С Verimail.js вы можете просто сделать:

var email = "[email protected]"; 
var verimail = new Comfirm.AlphaMail.Verimail(); 

verimail.verify(email, function(status, message, suggestion){ 
    if(status < 0){ 
     // Incorrect syntax! 
    }else{ 
     // Syntax looks great! 
    } 
}); 

Приведенный выше пример ударит по линии "Неправильный синтаксис! из-за неверного TLD 'cmo'. Помимо этого, он также даст предложение, что вы можете вернуться к своему пользователю, в этом случае переменная предложения будет содержать «[email protected]», так как «fabeook.cmo» очень похож на «facebook.com».

Надеюсь, это поможет!

1

Вот код HTML поля ввода и кнопки поля

<input input type="text" name="txtEmailId" id="txtEmailId" /> 
    <input type="submit" class="button" value="Suscribe" name="Suscribe" 
      onclick="javascript:ShowAlert()" /> 

Теперь добавьте ниже функции в заголовок вашей страницы

<script type="text/javascript"> 
function ShowAlert() { 
    var email = document.getElementById('txtEmailId'); 
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    if (!filter.test(email.value)) { 
     alert('Please provide a valid email address'); 
     email.focus; 
     return false; 
    } 
    else { 
     alert("Thanks for your intrest in us, Now you 
     will be able to receive monthly updates from us."); 
     document.getElementById('txtEmailId').value = ""; 
    } 
} 
</script> 

Здесь Вы можете найти статьи на эту Email Validation in JavaScript

0

Если вы указали свои домены, вы можете использовать этот код для проверки подлинности электронной почты, чтобы предотвратить анонимные домены электронной почты.

(^([a-zA-Z]{1,20}[-_.]{0,1}[a-zA-Z0-9]{1,20})(\@gmail\.com|\@yahoo\.com|\@hotmail\.com)$) 

Вы также можете добавить дополнительные домены.