2012-08-03 135 views
1

我只是學習JavaScript,所以容忍我,如果我的問題似乎傻...表單提交,即使驗證失敗

我需要建立一個HTML表單和運行領域的一些驗證。無論字段是否填寫正確,點擊提交按鈕時都會出現錯誤404。如果我複製/粘貼執行相同操作的其他代碼,它可以正常工作。文件「somepage.php」不存在,但它也不適用於其他人的代碼。

我用CodeLobster編碼,然後用Notepad ++編碼。不用找了。

這裏的HTML文件,然後再往下就是javascript文件的內容...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 

    <head> 
     <title>Registration Form</title> 
     <script type="text/javascript" src="js.js"></script> 
    </head> 

    <body> 
     <form action="somepage.php" onsubmit="checkLogin()" method="post" > 

       Name: <input type="text" name="name" id="nameF" /><br /> 
       Email: <input type="text" name="email" id="emailF" /><br /> 

      <input type="submit" value="Submit" name="submit" />  

     </form> 
    </body> 

</html> 

function checkLogin() 
{ 
    var emailPattern = /^\w+([\.\-]?\w+)*@\w+([\.\-]?\w+)*\.[a-z]{2,6}$/i; 
    var email = document.getElementById('emailF').value; 
    var name = document.getElementById('name').value;  

    if (email == "") 
    { 
     alert("Please enter valid email address."); 
     document.getElementById('emailF').select(); 
     document.getElementById('emailF').focus(); 
     return false; 
    } else if (name == "") { 
     alert("Please enter your name."); 
     document.getElementById('nameF').select(); 
     document.getElementById('nameF').focus(); 
     return false; 
    } else if (!emailPattern.test(email)) { 
     alert("The email address entered is invalid"); 
     document.getElementById('emailF').select(); 
     document.getElementById('emailF').focus(); 
     return false; 
    } 
    return true;  
} 
+0

如果「somepage.php」不存在,爲什麼你會期望它能工作? – casablanca 2012-08-03 01:17:00

+0

如果沒有有效的操作,則此表單將無法正常工作。一旦checkLogin函數返回true,它將觸發表單中描述的操作。如果該頁面不存在,則返回404錯誤。也許別人的代碼返回false,那個頁面永遠不會被解僱。 – 2012-08-03 01:18:48

+1

問題標題具有誤導性,這實際上並不是OP所要求的。 – Hamish 2012-08-03 01:19:14

回答

5

你的問題不在於網頁缺少(您已經知道了)。即使驗證失敗,問題仍然是您的表單提交。

form.onsubmit方法應返回false以防止表單提交。換句話說,這樣的:

<form action="somepage.php" onsubmit="checkLogin()" method="post" > 

應該是:

<form action="somepage.php" onsubmit="return checkLogin()" method="post" > 

當然,如果表格沒有驗證,它會正確地繼續somepage.php在這一點上,你會希望得到一個404誤差該頁面不存在。

+0

同意。您需要事件處理程序中的return語句。 – 2012-08-03 01:20:47

+0

首先,感謝您的快速回復。 – user1554726 2012-08-03 10:58:54

+0

我是這個網站的新手......以下是我回復的其餘部分: 首先,感謝您的快速回復。其次,是的,我現在意識到問題標題應該有不同的措辭。 Mia culpa。 它是有道理的,如果該函數返回true,那麼「行動」應該生效。我確實玩過了它,但它並沒有像它應該那樣工作。但在這一點上,我不記得爲什麼。我今晚會再試一次,並提供一些信息。 謝謝! – user1554726 2012-08-03 11:11:57