2011-07-19 69 views
2

我有一個Drupal的形式,即使jQuery submit()函數返回false,Drupal表單也會繼續提交;

<form action="/forms/contact.html" accept-charset="UTF-8" method="post" id="webform-client-form-1148-1" class="webform-client-form" enctype="multipart/form-data"> 

具有以下提交,

<input type="submit" name="op" id="edit-submit-1" value="Submit" class="form-submit" /> 

包含表單的頁面加載以下jQuery的內聯,

jQuery("#webform-client-form-1148-1").submit(function(){return false;}); 

不管我怎麼努力,提交按鈕總是提交表單。由於我返回false,我希望表單忽略提交過程並完全取消。

爲什麼表單繼續提交,即使表單的submit()函數返回'return false'?

這是一個簡單的例子,我在我的代碼中強迫提交表單時總是返回false,因此不應該提交。

回答

3

不久前我回答了一個類似的問題。檢查Stop form from submitting when searching with jQuery

解決方法是應用event.preventDefault()事件方法。不要忘記通過該功能傳遞事件。

例如

jQuery("#webform-client-form-1148-1").submit(function(event){ 
    event.preventDefault(); 
}); 
+1

根據調試和跟蹤到jQuery的代碼路徑,調用'return false'應該在jQuery核心代碼中調用event.preventDefault下游。這裏是一個到在線發佈的帖子的鏈接,該帖子也涉及這個主題,http://css-tricks.com/6809-return-false-and-prevent-default/。 –

+0

好點Mike!該鏈接提到以下內容,其中涉及更多細節http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/,非常棒的閱讀! –

1

刪除input type="submit"

<input type="button" name="op" id="edit-submit-1" value="Submit" class="form-submit" /> 

和嘗試這個..

$('#edit-submit-1').click(function(){ 
     jQuery("#webform-client-form-1148-1").submit(function(){return false;}); 

}); 

,如果你不想在所有提交表單,那麼你可以使用unbind()die()

你也可以使用event.preventDefault(); 來防止表單提交的默認操作。

希望這些替代方法可以幫助你。

相關問題