我正在处理一个文本字段,它使用一种不允许您输入数值以外的验证。因此,我的初始代码看起来非常简单,类似于:
$(textField).onKeyPress(function(e) {
if (e.which < 48 && e.which > 57)
e.preventDefault();
});
这是相当简单的,但事实证明(在所有浏览器的最新版本中)Firefox 将使用箭头键和删除/退格键阻止移动,而其他浏览器则不会。
环顾四周,我发现我还需要检查这些键,并检查e
事件引用中公开的不同属性。
我的最终代码如下所示:
$(textField).onKeyPress(function(e) {
var code = e.which || e.keyCode;
if (code > 31 // is not a control key
&& (code < 37 || code > 40) // is not an arrow key
&& (code < 48 || code > 57) // is not numeric
&& (code != 46) // is not the delete key
)
e.preventDefault();
});
然而,这感觉对于解决一个相当简单的问题来说太过分了,因为只是防止了非数字。
我究竟做错了什么?就这种验证而言,哪个是最佳实践?