0
我正在處理一個項目,並有一個jQuery事件處理程序,我試圖檢測用戶輸入數據在字段中的存在,因爲它正在鍵入。與一個奇怪的一面工作,讓我有點困惑,爲什麼會發生這種情況。jQuery測試在字段中的值存在工作不正常
我寫的例程是這樣的;
$(document).ready(function() {
$('#salary_bal').on('change blur keydown', function() {
if($(this).val.length === 0 || $(this).val() === '') {
setSubmitState('off');
} else {
setSubmitState('on');
}
});
});
function setSubmitState(state) {
switch(state) {
case 'on':
$('#fsSubmit').attr('disabled', false);
$('#fsSubmit').addClass('button');
$('#fsSubmit').addClass('cursor');
break;
case 'off':
$('#fsSubmit').attr('disabled', true);
$('#fsSubmit').removeClass('button');
$('#fsSubmit').removeClass('cursor');
break;
}
}
正如你可能會被setSubmitState通話猜測,如果綁定字段不具有價值,它應該禁用表單的提交按鈕。
就像我說的,這是「sorta」正常工作。障礙在於,它實際上就像是響應前一個鍵入的字符而不是新鍵入的字符。
下面是動作序列及其各自的結果;
- 在該字段中輸入一個'x'。
- 提交按鈕不會啓用。
- 在該字段中輸入另一個'x'。
- 提交按鈕更改爲啓用。
- Backspace並刪除一個'x'。
- 提交按鈕保持啓用狀態。
- Backspace再次將字段留空。
- 提交按鈕保持啓用狀態。
- 退格一次。
- 提交按鈕更改爲禁用。
我一直在敲打我的頭撞牆試圖調試這和我厭倦了我的紡輪。 (更不用說從牆上的頭痛)任何人都可以提供這個問題的解決方案,請?
Keydown應該是keyup,所以事件會在新插入的字符後觸發。 Keydown在鍵入之前觸發並且一個字符在鍵入之後進入輸入。 – 2012-02-20 01:57:59
如果我使用keyup,我會得到一個錯誤,指出不存在這樣的函數。 – Skittles 2012-02-20 01:58:43
劃痕。 O.o我不知道爲什麼會這樣。我以前真的得到了這個錯誤,但現在我沒有。這只是瘋狂。謝謝 – Skittles 2012-02-20 02:00:08