我有javascript电子邮件验证的问题

时间:2009-10-01 10:34:02

标签: php javascript validation email

我在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>

// checkMail()的java scrit代码

<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帮我提前谢谢

3 个答案:

答案 0 :(得分:5)

问题是没有id

的元素

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()";/>

编辑: 将javascript验证放在提交按钮更改

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

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

并从电子邮件文本框中删除onsubmit事件。

答案 1 :(得分:1)

凤凰有基本的错误。但是:

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

不要在提交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');

这是一个非常糟糕的主意,就像大多数临时“电子邮件验证”正则表达式一样,它会拒绝许多完全有效的电子邮件地址。您允许使用哪些用户名和TLD的规则尤其毫无意义,具有限制性。

有关如何实际验证电子邮件地址的信息,请参阅this infamous regex。然后哭,放弃,而只是做基本的检查。 (它里面有一个'@'吗?里面有'。'吗?没有空格吗?那就好了。)

(即使是页面长恐怖正则表达式也无法通过IDN处理非ASCII电子邮件地址,支持它会很好。)

答案 2 :(得分:0)

尝试将javascript函数调用从提交按钮移到电子邮件字段本身的onblur事件上。