jQuery keyup事件滞后于用户输入

noc*_*ist 8 javascript jquery

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

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

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

Jos*_*ier 9

将我的评论转换为答案

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

更新的示例

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