2011-03-01 35 views
10

當用戶提交表單時,我想停止表單的默認行爲。即它不應該重新加載。以便我可以執行AJAX請求。如何停止使用Javascript重新加載表單?

這裏是我使用的代碼。

<script type="text/javascript"> 
    function validateForm() 
    { 
     return false; 
    } 
</script> 
<form action="" name="contact" onsubmit="validateForm();"> 
    <input type="text" name="name" value="Enter Your Name..."/> 
    <input type="submit" name="submit"/> 
</form> 

這不會阻止表單被提交或重新加載。我如何實現這一目標?

+0

您不能從AJAX請求返回。 – SLaks 2011-03-01 04:45:05

回答

18

它需要onsubmit="return validateForm()"

+0

用於防止重新加載/清除表單的短片段:'onsubmit =「返回false;」' – 2016-09-16 08:30:12

4

你應該用在形式的onsubmit hanlder回報。 試試這個版本:

<script type="text/javascript"> 
    function validateForm() 
    { 
     return false; 
    } 
</script> 
<form action="" name="contact" onsubmit="return validateForm();"> 
    <input type="text" name="name" value="Enter Your Name..."/> 
    <input type="submit" name="submit"/> 

2

在事件處理中添加回報:

onsubmit="return validateForm();" 

否則功能來執行,但不告訴瀏覽器停止處理。

6

可以使用onsubmit屬性的建議,更不顯眼的方式是通過綁定到你的onsubmit事件的函數的事件對象上使用preventDefault()

function validateForm(e) { 
    if (e.preventDefault) { 
     e.preventDefault(); 
    } 
    e.returnValue = false; // for IE 
} 
如果你綁定事件

這隻能傾聽表單,而不是內嵌onsubmit

編輯:這裏是你如何綁定一個事件監聽器到窗體,當被觸發時會傳遞一個Event對象(注意這是W3C風格,這在IE中不起作用,但會給你一個想法):

var form = document.getElementById('myform'); 
form.addEventListener('submit', validateForm, false); 

當觸發事件submit,它會調用validateForm函數,傳遞事件對象。這裏有一個關於JavaScript事件一個真正的好文章:

http://www.quirksmode.org/js/introevents.html

+0

這裏的e是什麼?我需要傳遞任何參數嗎? – 2011-03-01 04:54:00

+0

請參閱我對編輯的回答以獲取更多信息。 – 2011-03-01 05:00:43

+0

它在很大程度上幫助了我。謝謝。 :) – 2011-03-01 05:24:41

0

使用jQuery:

$('form').on('submit', function() { 
    // call functions to handle form 
    return false; 
}); 

基本上與上述相同的解決方案,但我更喜歡把我的JS了我的HTML,連"onsubmit"屬性。

相關問題