綁定 click 事件執行 c.submit()(c 為 jQuery 對象),表單不提交,無網絡請求,但 action/method 已正確設置。
jQuery.fn.submit() 會觸發 jQuery 內部的 submit 事件流程。jquery.validate,該插件在 submit 事件中攔截並驗證表單;驗證不通過時 return false 取消提交。submitHandler)導致流程偏離。// ❌ 錯誤
c.submit();
// ✅ 正確:繞過 jQuery 事件體系,直接調用 DOM 原生 submit()
c[0].submit(); // c 是 jQuery 對象,c[0] 是原生 HTMLFormElement
| 調用方式 | 是否觸發 jQuery submit 事件 | 是否經過 validate 驗證 |
|---|---|---|
$(form).submit() | 是 | 是(可能被攔截) |
form.submit() / form[0].submit() | 否 | 否(直接提交) |
validate 的 submitHandler 統一提交邏輯,保持驗證與提交一致。form[0].submit()。click 手動提交與 validate 自動提交,雙重綁定極易產生競態。理解 jQuery submit() 與 DOM submit() 的本質區別,一鍵解決「驗證通過卻提交不了」的疑難雜症。