2015-04-02 126 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