jQuery keyup事件滞后于用户输入

时间:2015-12-21 16:05:40

标签: javascript jquery

我有一个文本框,用户只能输入数字数据。我在文本框的keyup上使用了以下功能:

$('#ssn').keyup(function () {
    var val = this.value.replace(/\D/g, '');
    this.value = val;
});

我遇到的问题是当用户按下限制键时的延迟,该字符在被空字符串替换之前显示片刻。按住某个键将在框中显示一串字符,直到该键被释放。有没有办法防止这种行为?我尝试过不同的键盘事件,比如keydown或keypress,他们似乎没有表现得更好。 以下是问题的解答:https://jsfiddle.net/oxpy96g9/

1 个答案:

答案 0 :(得分:9)

将我的评论转换为答案

不是监听keyup事件,而是监听input event,以便在值更改时触发事件,而不是在释放密钥时触发事件:

Updated Example

$('#numbers').on('input', function() {
  this.value = this.value.replace(/\D/g, '');
});