我有一个文本框,用户只能输入数字数据。我在文本框的keyup上使用了以下功能:
$('#ssn').keyup(function () {
var val = this.value.replace(/\D/g, '');
this.value = val;
});
我遇到的问题是当用户按下限制键时的延迟,该字符在被空字符串替换之前显示片刻。按住某个键将在框中显示一串字符,直到该键被释放。有没有办法防止这种行为?我尝试过不同的键盘事件,比如keydown或keypress,他们似乎没有表现得更好。 以下是问题的解答:https://jsfiddle.net/oxpy96g9/
答案 0 :(得分:9)
将我的评论转换为答案
不是监听keyup
事件,而是监听input
event,以便在值更改时触发事件,而不是在释放密钥时触发事件:
$('#numbers').on('input', function() {
this.value = this.value.replace(/\D/g, '');
});