2015-04-02 226 views
1

我编写了电子邮件地址验证脚本,并在给出无效电子邮件时发出警报通知。虽然帐户具有相同无效的电子邮件地址创建并存储在数据库中......请帮助 代码似乎是:电子邮件地址验证但创建帐户,虽然如果电子邮件地址无效

<div class="form"> 

    <ul class="tab-group"> 
    <li class="tab "><a href="#signup">Sign Up</a></li> 
    </ul> 

    <div class="tab-content"> 


    <form name="form1" action="trynow" method="post" onsubmit="ValidateEmail(document.form1.txtEmail)"> 
     <div> 
      <input type="hidden" name="register_csrf" autocomplete="false" autofocus="false" value="<%=((String)request.getAttribute("register_csrf")!=null)?request.getAttribute("register_csrf"):"" %>"/> 

      <% String error_msg = (String)request.getAttribute("error_msg"); 
       if(error_msg != null) 
       { 
      %> 
      <div class="alert alert-error"> <%= error_msg %></div> 

      <% } %> 
      <%= ((String)request.getAttribute("succ_msg") != null)?request.getAttribute("succ_msg"):"" %> 

     </div> 



      <div class="field-wrap"> 
       <label> 
        Full Name<span class="req">*</span> 
       </label> 
       <input required="required" name="txtName" type="text" > 
      </div> 



      <div class="field-wrap"> 
       <label> 
        Email Address<span class="req">*</span> 
       </label> 
       <input required="required" name="txtEmail" type="text" > 
      </div> 

      <div class="field-wrap"> 
       <label> 
        Set A Password<span class="req">*</span> 
       </label> 
       <input name="txtPassword" type="password" > 
      </div> 

      <div class="field-wrap"> 
       <label> 
        Retype Password<span class="req">*</span> 
       </label> 
       <input name="txtRePassword" type="password" > 
      </div> 
      <div> 
      <button type="submit" class="button button-block" />Get Started</button> 
      </div> 
     <a class="small-message" href="login"><small>Already Registered ?</small></a><a href="/"> <small> <br>Back To Home</small></a> 
     </form> 
     <script> 
      function ValidateEmail(inputText) 
      { 
       var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 
       if(inputText.value.match(mailformat)) 
       { 
        document.form1.txtEmail.focus(); 
        return true; 
       } 
       else 
       { 
        alert("You have entered an invalid email address!"); 
        document.form1.text1.focus(); 
        return false; 
       } 
      } 
     </script> 

    </div><!-- tab-content --> 

</div> <!-- /form --> 

+0

在身体我写如: – 2015-04-02 05:33:29

+1

你的var mailformat检查没有引用。 – MrTechie 2015-04-02 05:36:06

回答

0

而不是文本1txtEmail

<script> 
       function ValidateEmail(inputText) 
       { 
        var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 
        if(inputText.value.match(mailformat)) 
        { 
         document.form1.txtEmail.focus(); 
         return true; 
        } 
        else 
        { 
         alert("You have entered an invalid email address!"); 
         document.form1.txtEmail.focus(); 
         return false; 
        } 
       } 
      </script> 
+0

它的作品非常感谢你的朋友 – 2015-04-02 06:51:50

1

在表单的onsubmit,使用return ValidateEmail(this.txtEmail)"

<form name="form1" action="trynow" method="post" onsubmit="return ValidateEmail(this.txtEmail)"> 

现在只有email有效,表单提交才会发生。否则会被阻止。

此外,您正在参照document.form1.text1.focus();,而text1根本不存在于窗体中。所以你也必须在这里得到一个错误。

+0

在函数validateEmail中,OP使用'inputText.value',所以在这种情况下只需传递元素而不是值。你可以参考'if(inputText.value.match(邮件格式))' – mohamedrias 2015-04-02 06:01:16

+0

啊,你说的没错。但仍然可以使用this.txtEmail – mplungjan 2015-04-02 06:02:52

+0

雅这是事实。我们可以通过多种方式引用元素。但我想这是OP的选择,OP有信心。因为这两个将参考相同的txtEmail我离开它,因为:) – mohamedrias 2015-04-02 06:04:22

0

您有几个问题,包括在电子邮件发生错误时没有关注正确的字段,并且在没有错误的时候关注某些内容。 我也会使用测试而不是匹配。

我建议改变这个(在页面的头):

function ValidateEmail(inputText) { 
 
    var val = inputText.value; 
 
    var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 
 
    if (!mailformat.test(val)) { 
 
    alert("You have entered an invalid email address!"); 
 
    inputText.focus(); 
 
    return false; 
 
    } 
 
} 
 
window.onload=function() { 
 
    document.getElementsByName("form1")[0].onsubmit=function() { 
 
    return ValidateEmail(this.txtEmail); 
 
    } 
 
}
<div class="form"> 
 
    <ul class="tab-group"> 
 
     <li class="tab "><a href="#signup">Sign Up</a> 
 

 
     </li> 
 
    </ul> 
 
    <div class="tab-content"> 
 
     <form name="form1" action="trynow" method="post"> 
 
      <div> 
 
       <div class="field-wrap"> 
 
        <label>Full Name<span class="req">*</span> 
 

 
        </label> 
 
        <input required="required" name="txtName" type="text"> 
 
       </div> 
 
       <div class="field-wrap"> 
 
        <label>Email Address<span class="req">*</span> 
 

 
        </label> 
 
        <input required="required" name="txtEmail" type="text"> 
 
       </div> 
 
       <div class="field-wrap"> 
 
        <label>Set A Password<span class="req">*</span> 
 

 
        </label> 
 
        <input name="txtPassword" type="password"> 
 
       </div> 
 
       <div class="field-wrap"> 
 
        <label>Retype Password<span class="req">*</span> 
 

 
        </label> 
 
        <input name="txtRePassword" type="password"> 
 
       </div> 
 
       <div> 
 
        <button type="submit" class="button button-block" />Get Started</button> 
 
       </div> <a class="small-message" href="login"><small>Already Registered ?</small></a><a href="/"> <small> <br>Back To Home</small></a> 
 

 
     </form> 
 
     </div> 
 
     <!-- tab-content --> 
 
    </div> 
 
    <!-- /form -->

+0

只需要一次更正,OP已经在标签中使用类“.req”,如'重新输入密码 *'并且在你的validate函数中,你正在检查'var reqs = document.querySelectorAll(“。req”);'这将返回所有的span元素。现在希望我的答案值得投票选举;) – mohamedrias 2015-04-02 06:14:28

+0

当然是的,但选择者仍然是错误的。输入不在span标签内。正如我前面提到的那样,' *'不包含输入,但是您已经使用过'document.querySelectorAll(“。req> input”)' – mohamedrias 2015-04-02 06:19:43

+0

是的,我明白了。我已经删除了其他领域的测试,因为它可以很容易地在jQuery中完成,但寻找以前的兄弟姐妹是浪费时间 - 需要对html进行更改以使我的循环有意义。我错过了我的手机上的跨度 – mplungjan 2015-04-02 06:25:23

相关问题