我正在开发一个项目并且有一个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调用猜测的那样,如果绑定字段没有值,它应该禁用表单的提交按钮。
像我说的那样,这是“有点”正常工作。问题在于,它实际上就像是在响应前一个键入的字符,而不是一个新键入的字符。这是动作序列及其各自的结果;
我一直在撞墙试图调试这个,我厌倦了旋转我的车轮。 (更不用说墙上的头痛了)有人可以提供这个问题的解决方案吗?
答案 0 :(得分:0)
Keydown应该是keyup,因此在新插入的角色之后会触发事件。 Keydown在keyup之前触发,一个角色在keyup之后进入输入。