【发布时间】:2015-11-10 02:00:52
【问题描述】:
我有以下代码,我试图在输入中只允许 3 位数字 0-9,但仍允许用户使用箭头键、退格键和删除键。
它可以在其他浏览器中使用,但在 Firefox 中,控制台的输出显示箭头键和注册为键代码 0 的删除键。什么给出?
代码:
$input.
keypress(function(e) {
var currentLength = $input.val().length;
var c = e.which;
console.log("key", c);
//0=48, 9=57, 37-40 = arrow keys 8= backspace, 46=delete
if (c === 8 || c === 46 || (c >= 37 && c <=40)) {
//delete, backspace, and arrow keys are allowed
} else if (c < 48 || c > 57 || currentLength >= 3) {
e.preventDefault();
}
}).on("paste", function(e) {
e.preventDefault();
});
【问题讨论】:
-
请注意,事件 'input' 只会触发更改输入值的键,因此您不必关心箭头键。
-
@Taplar 这是一个很好的建议,但不幸的是我仍然必须支持 IE 8 :( 不过谢谢!
标签: javascript jquery firefox