2013-04-28 58 views
34

我想運行一些文本框輸入的JavaScript用戶驗證。HTML表單的動作和的onsubmit問題

我遇到的問題是,我的形式有我們的網站內去到一個新頁面的動作,和onsubmit屬性永遠不會運行的JavaScript功能。

是否有更好的解決方案,或者使用以下代碼的解決方案:注意:如果將操作切換爲checkRegistration(),則JavaScript文件的寫入是正確的。

它僅僅是與同時運行動作和JavaScript的問題。

<form name="registerForm" action="validate.html" onsubmit="checkRegistration()" method="post"> 
    <!-- textboxes here --> 
    <!-- and submit button --> 
</form> 
+0

可以分享'checkRegistration '以及 – 2013-04-28 12:21:19

+0

它的工作原理,它只是檢查用戶名文本框是否是電子郵件等等。這不是在JavaScript中的錯誤的問題。 – 2013-04-28 12:22:39

回答

43

你應該停止通過onsubmit回調返回false提交程序。

<script> 
function checkRegistration(){ 
    if(!form_valid){ 
     alert('Given data is not correct'); 
     return false; 
    } 
    return true; 
} 
</script> 
<form onsubmit="return checkRegistration()"... 

UPDATE:

這裏你已經完全工作的例子,形式會當你寫Google進軍輸入只提交,否則將返回錯誤:

<script> 
function checkRegistration(){ 
    var form_valid = (document.getElementById('some_input').value == 'google'); 
    if(!form_valid){ 
     alert('Given data is incorrect'); 
     return false; 
    } 
    return true; 
} 
</script> 
<form onsubmit="return checkRegistration()" method="get" action="http://google.com"> 
    Write google to go to google..<br/> 
    <input type="text" id="some_input" value=""/> 
    <input type="submit" value="google it"/> 
</form> 
+0

所以在我的js文件中,我會如果沒有錯誤 - >返回true,否則false將不會提交併重定向到驗證html頁面?正確? – 2013-04-28 12:24:46

+1

不完全。如果您返回true表單將被提交,瀏覽器將提出請求。如果你返回false瀏覽器將停止,一切都在你手中如何處理。最簡單的方法是提示驗證問題,如示例。 – s3m3n 2013-04-28 12:28:12

+0

它正在工作,但我得到的是304響應,而不是200.這會如何引起這種情況? – 2013-04-28 12:36:41

6

嘗試

onsubmit="return checkRegistration()"