我有一个奇怪的问题,我似乎无法弄清楚:
这个keydown / keypress函数只返回前一个值(即第一次没有返回,第二次返回第一个值,第三次返回第二个值等等)
有人可以告诉我为什么 keydown 和 keypress 不起作用,但 keyup 有效吗?
$(".modal-body #rowDownload").unbind().on('keypress',function(){
var numRows = $(".modal-body #rowDownload").val();
// var numRows = $(this).val();
alert(numRows);
if (typeof numRows !== 'number') return;
});
答案 0 :(得分:8)
这是javascript的正常行为。您在keypress上调用的函数在添加值本身之前就已运行。
让我向你展示一下。当您在按键上执行.preventDefault()
时,会发生什么?不会插入该字符。后面的代码添加角色,然后运行preventDefault()
并删除角色,这是逻辑吗?我不这么认为,这就是为什么函数在添加字符之前运行。
它将与.keyup()
一起使用,因为已添加该字符。
希望澄清一点!
答案 1 :(得分:3)
我查了一下这个链接。使用'keyup'事件。有用。这是因为当您使用keydown或keypress事件时,事件函数会在更新输入标记的值之前运行,因为它是keydown。如果您按键一次尝试代码,那么您将看到该功能立即运行。但是在keyup上,函数将在密钥发布和更新后运行。
答案 2 :(得分:0)