2015-07-09 36 views
-3

我想驗證我的表單時,「提交」按鈕,點擊此表格提交頁面之前不起作用。event.preventDefault();像我期望

驗證函數被調用並按預期執行;但表單未提交,導致更改未保存。

下面是代碼的一部分 -

$j("#btnSubmit").on("click",function(event){ 
      event.preventDefault(); 
      alert("validation complete"); 
      return; 
}); 

<button type="submit" name="btnSubmit" id="btnSubmit" value="btnSubmit"> </button> 
+0

所以你防止默認提交,所以當你確認它通過了,你是否提交表單,返回一些東西,或什麼都不做? – j08691

+0

如何** **你期望['preventDefault()方法'](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)工作? –

+2

@ angelcool.net - 的preventDefault被稱爲 - 你會返回true嗎? – j08691

回答

1

event.preventDefault();停止執行。舉一個id到您的表單,並添加$('#formid').submit();而不是你的return的。

編輯:

您的按鈕類型更改爲按鈕而不是提交,以便在窗體只有您的驗證後提交。

+0

這隻會觸發原始的'submit'事件,導致一個巨大的循環。 –

+0

看到我的編輯。現在將沒有任何環 – Keerthi

+0

是的,這會工作,好主意工作。 –

1

你取消與event.preventDefault()提交事件,所以現在你需要手動處理您的驗證,而不是僅僅做return後提交。

然後你可以使用像AJAX這樣的東西來做實際的提交。提交表單的非AJAX方式請參閱Keerthi的方法。

請記住,如果你做$('#myForm').submit()或類似的東西,它會運行你的原始函數來驗證並導致一個循環。

1

你會想看看$().submit()函數。

如果你preventDefault()你甚至停止點擊傳播,所以提交肯定不會觸發。你將需要做的是要麼捕捉提交事件

$('#myForm').submit(function(){ validate(); return; })

或者你會想手動調用您單擊處理提交

$("#btnSubmit").on("click",function(event){ 
    event.preventDefault(); 
    alert("validation complete"); 
    $('#myForm).submit(); 
}); 
相關問題