2009-10-01 2 views
-2

У меня есть проблемы в JavaScript проверки электронной почты, я написал код что-то вроде,у меня есть проблемы в JavaScript электронной проверки

//emp.php

<form action="<?php echo $editFormAction; ?>" method="post" name="form2" id="form2" > 
<table> 
<tr valign="baseline"> 
     <td nowrap="nowrap" align="right">Desired Email-ID:</td> 
     <td><input type="text" name="emp_email" value="" size="32" onsubmit="checkMail()";/></td> 
    </tr> 
<tr valign="baseline"> 
     <td nowrap="nowrap" align="right">&nbsp;</td> 
     <td><input type="submit" value="Insert record" onclick="checkMail();"/></td> 
    </tr> 
    </table> 
</form> 

// Java scrit код для CheckMail()

<script language="javascript"> 

function checkMail() { 
    var email=document.getElementById('emp_email').value; 
var mail = email.value; 

     var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]­{1}[a-z0-9]+)*[\.]{1}(com|ca|net|org|fr|us|qc.ca|gouv.qc.ca)$', 'i'); 



     if(!reg.test(mail) || mail == "") 

     { 

      alert("Your email address isn't valid!"); 

      return false; 

     } 

     else { 

      alert("Email address is okay, let's send the form!");  

     } 

     } 

     </script> 

Plz помочь мне заранее спасибо

+2

В чем проблема? – Garry

+3

Ну, у него есть ... интересное регулярное выражение, которое отклонит огромное количество совершенно точных адресов электронной почты. – Quentin

+0

Можете ли вы опубликовать HTML-форму вашей формы?Regex выглядит нормально –

ответ

0

Попробуйте перевести вызов функции javascript с кнопки отправки и на событие onblur на самом поле электронной почты.

+0

замечательно работает, отличный ответ, спасибо lot Garry ... – amol

+0

Это можно сделать в событии onClick кнопки отправки. – rahul

+0

Без проблем, я рад, что вы все отсортированы :) – Garry

5

проблема заключается в тха t нет элемента с идентификатором

emp_email.

Ваш элемент имеет имя emp_email. Добавьте атрибут id в текстовое поле.

<input type="text" name="emp_email" value="" size="32" onsubmit="checkMail()";/> 

изменить его

<input type="text" name="emp_email" id="emp_email" value="" size="32" onsubmit="checkMail()";/> 

Edit: Чтобы поместить яваскрипт проверки на отправить кнопку Изменить

<input type="submit" value="Insert record" onclick="checkMail();"/> 

к

<input type="submit" value="Insert record" onClick="return checkMail();" /> 

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

+0

решением для этого было бы добавить id = "emp_email" на адрес электронной почты –

+0

привет, сэр спасибо за сотрудничество, , но сэр функция javascript не звонит – amol

1

У феникса есть основная ошибка. Но:

Не ставьте проверку формы на отправку onclick. Можно отправить форму без нажатия кнопки отправки (в зависимости от браузера и количества полей и кнопок в форме). Всегда кладите его на самой форме:

<form ... onsubmit="return checkMail();"> 

также:

var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]­{1}[a-z0-9]+)*[\.]{1}(com|ca|net|org|fr|us|qc.ca|gouv.qc.ca)$', 'i'); 

Это действительно плохая идея, как и большинство одноранговой «проверки электронной почты» регулярные выражения он будет отвергать многие вполне допустимый e- адрес электронной почты. Ваши правила, для которых разрешены имена пользователей и TLD, являются, в частности, бессмысленными, ограничительными.

См. this infamous regex как фактически проверять адреса электронной почты. Затем плачьте, сдавайтесь и просто делайте базовые проверки. (Есть ли в нем «@»? Есть ли в нем «.»? Нет ли там пробелов? Хорошо хорошо тогда.)

(Даже URL-длинный-ужасно-регулярное выражение не может справиться с не- ASCII-адреса электронной почты через IDN, которые было бы неплохо поддерживать.)

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