2015-02-09 105 views
0

我正在使用JavaScript來驗證電子郵件。問題是,如果電子郵件ID不匹配,則會出現一個警報按鈕。一旦我點擊該按鈕,它仍然帶我到另一個頁面,而不是相同的頁面來糾正我的郵件ID。JavaScript鏈接錯誤

HTML:

<label for="department">Email ID</label> 
<input type="email" size="30" name="email" id="email" required /> 
<label for="department">Confirm Email ID</label> 
<input type="email" size="30" name="cname" id="confirm_email" required /> 
<input type="submit" name="submit" value="submit" class="button" onClick="validate()"> 

的JavaScript:

function validate() 
{ 
    if(document.getElementById("email").value != document.getElementById("confirm_email").value) 
     alert("Email do no match"); 
} 
+3

嘗試添加返回false,如果郵件不匹配阻止表單提交 – ekans 2015-02-09 09:21:08

回答

-1

如果驗證失敗,它必須阻止提交表單。所以

 return validate(); 

必須在那裏。所以如果validate函數返回一個假值,那麼它會停止要提交的表單。如果validate函數返回true,則提交將完成。

 <form method='post' action='action.php'>  
     <label for="department">Email ID</label> 
     <input type="email" size="30" name="email" id="email" required /> 
     <label for="department">Confirm Email ID</label> 
     <input type="email" size="30" name="cname" id="confirm_email" required /> 
     <input type="submit" name="submit" value="submit" class="button" onClick="return validate();"> 
     </form> 


<script> 
    function validateEmail(email) { 
     var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
     return re.test(email); 
    } 

    function validate(){ 
     if(!validateEmail(document.getElementById('email').value)) 
     { 
      alert('Please enter a valid email'); 
      email.focus(); 
      return false; 
     } 
     else if(document.getElementById('email').value!=document.getElementById('confirm_email').value) { 
      alert('Email Mismatch'); 
      confirm_email.focus(); 
      return false; 
     } 
      return true; 
    } 
    </script>    
1

您應該添加return false;if代碼塊,如果你不想重定向。

當提交表單時,瀏覽器默認刷新頁面。要防止刷新,請添加return false;

瞭解更多:return | MDN

+0

爲什麼downvotes?如果你投降,請提供禮貌提到爲什麼。 – 2015-02-09 09:25:53

+0

我真的不明白如何使用window.location.href在這裏是正確的,正如ekans建議的那樣,阻止表單提交很可能是OP正在尋找的東西。 – Olivier 2015-02-09 09:26:22

+0

@Oivivier即使我的代碼會阻止表單提交,PLUS,它會重定向。 – 2015-02-09 09:28:06

7

你需要告訴提交按鈕不執行提交

function validate() 
{ 
     if (document.getElementById("email").value!=document.getElementById("confirm_email").value) { 
     alert("Email do no match"); 
     return false; 
     } 
} 
+0

沒有相同的結果。它移動到下一頁 – mani 2015-02-09 09:31:39

+0

@mani你有沒有試過我的解決方案... – 2015-02-09 09:33:01

1

的問題是,因爲你已經按鈕類型=提交

更改輸入type ='button'

<input type="button" name="submit" value="submit" class="button" onClick="validate()"> 

和使用JavaScript

document.getElementById("myForm").submit(); 

我的情況下提交表單要驗證只在提交時再使用

event.preventDefault(); 

,然後驗證,但驗證成功後,必須提交使用JS或JQ形式。 JS方法如上所述,jq方法是:

$("form").submit(); 
+0

我需要它在我的表單提交而已。而只提交它必須驗證 – mani 2015-02-09 09:34:16

+0

@mani看到我更新了我的答案 – 2015-02-09 09:43:09

0
<html> 
    <head> 
     <script> 
     function validate(){ 
      if(document.getElementById("email").value != document.getElementById("confirm_email").value){ 
       alert("Email do no match"); 
       return false; 
      } 
     } 
     </script> 
    </head> 
    <body> 
     <form action="formsubmit.php" method="post" onsubmit="return validate()"> 
      <label for="department">Email ID</label> 
      <input type="email" size="30" name="email" id="email" required /> 
      <label for="department">Confirm Email ID</label> 
      <input type="email" size="30" name="cname" id="confirm_email" required /> 
      <input type="submit" name="submit" value="submit" class="button"> 
     </form> 
    </body> 
</html> 
+0

謝謝。其作品:) – mani 2015-02-09 09:38:29

+0

快樂2幫助:-) – 2015-02-09 09:39:26