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