2011-10-06 116 views
1

我在表單上有一個輸入元素以及一個提交按鈕。在提交文本之後但在提交之前運行javascript/jquery

我想在輸入元素上每當發生更改時都運行更改事件。問題是,如果最終用戶更改文本並單擊提交按鈕,則更改事件中的代碼不會運行。

用戶單擊提交按鈕後,立即提交表單(如更改沒有時間運行,模糊或焦點出現相同)。

我的控件可以放在任何窗體上,我不控制按鈕的單擊事件。

請幫助

+3

ü可以分享您的代碼? –

+2

你可能想嘗試'onkeyup'事件 - 捕捉實際的按鍵。 –

回答

1

如果你想趕上,只要在文本框中輸入更改嘗試此在的document.ready

$("input[type='text']").change(function() { 
    $("#SubmitButton").attr('disabled', 'disabled'); 
    // check input ($(this).val()) for validity here 
    // after text is updated..etc, enable the button 
    $("#SubmitButton").removeAttr('disabled'); 
}); 
+0

是的,我目前正在這樣做,但用戶仍然可以更改文本,然後點擊提交按鈕,而無需更改事件觸發。在更改運行之前,表單會被提交。 – David

+0

這就像提交已經開始,即使我可以直觀地看到更改提交的輸入值已經開始,因此我沒有機會更新文本值 – David

+0

您可以禁用提交按鈕,直到更改功能有完成 – Avien

0

擴展上@Aleks G的評論,你最好的辦法是觸發你的變更處理,而不僅僅是change事件。除了keyup,我發現你也需要小心處理與鼠標粘貼(不觸發KEYUP或更改事件):

yourInput.bind('change keyup paste', function() { 
    // Your code 
});