jQuery的$(form).submit();應該嗎?不在表單標簽內觸發onSubmit嗎?我有以下內容:<script type="text/javascript">function CancelFormButton(button) {
$(button.form).submit();}</script><form onsubmit="alert('here');"><input type="button" value="Cancel" onClick="CancelFormButton(this);" /></form>當我單擊“取消”按鈕時,不會觸發來自表單標簽的onsubmit。該行將成功提交表單:$(button.form).submit();但是跳過alert('here');form標記中onsubmit中的。這是正確的還是我做錯了什么?順便說一句,在這種情況下,我需要此功能,但是我只是想知道是否在觸發onsubmit的瀏覽器中遇到問題。
3 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
抱歉,誤解了您的問題。
根據Javascript-在調用form.submit()時捕獲onsubmit:
最近有人問我:“為什么使用JavaScript提交表單時,為什么不會觸發form.onsubmit事件?”
答案:當前的瀏覽器不遵守html規范的這一部分。該事件僅在用戶激活時觸發,而在代碼激活時不觸發。
(強調)。
注意: “由用戶激活”還包括單擊提交按鈕(可能包括回車鍵的默認提交行為,但我沒有嘗試過)。我相信,如果您(使用代碼)單擊提交按鈕,也不會觸發該事件。

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
我想在某些情況下希望這種行為是合理的,但是我認為不觸發表單提交的代碼應該(始終)是默認行為。假設您想通過以下方式捕獲表單的提交
$("form").submit(function(e){ e.preventDefault();});
然后對輸入進行一些驗證。如果代碼可以觸發提交處理程序,則您永遠都不能包含
$("form").submit()
在此處理程序中,因為這將導致無限循環(將調用SAME處理程序,以防止提交,驗證和重新提交)。您需要能夠在提交處理程序中手動提交表單,而無需觸發相同的處理程序。
我意識到這并不能直接回答問題,但是此頁面上還有許多其他有關如何破解此功能的答案,我認為需要指出(而且評論太長了)。
- 3 回答
- 0 關注
- 1359 瀏覽
相關問題推薦
添加回答
舉報
0/150
提交
取消