我为用户构建了一个系统,用于输入信用卡号,银行代码编号,两步代码等。达到maxlength时控制自动进展的小jQuery脚本似乎运行良好大多数设备和浏览器,Firefox除外(45.0.2,在其他FF'未经测试)。
使用Firefox,它会自动删除任何' 0'那是进入的,这是一个真正的问题。不可否认,我并不是那里最强大的jquery脚本编写者,但是我无法解决我的代码中触发此行为的问题。
我在这里设置了一个codepen:http://codepen.io/anon/pen/ZWxYag
使用我的脚本(源自几个SO线程):
var $single_degit = $('input.singleDigit');
$single_degit.keyup(function (e) {
var $elm = $(this);
if (e.which == 8) {
//backspace
$elm.prevAll($single_degit).first().focus();
} else if ((e.which > 47 && e.which < 58) || (e.which > 96 && e.which < 106)) {
$elm.next($single_degit).focus();
} else {
$elm.val('');
return false;
}
});
我是否以某种方式写过这种行为?还是我遇到了一个错误?谢谢!
答案 0 :(得分:2)
问题在于:
else if ((e.which > 47 && e.which < 58) || (e.which > 96 && e.which < 106))
您的代码应为:
else if ((e.which > 47 && e.which < 58) || (e.which > 95 && e.which < 106))
由于数字小键盘0(我假设为零,你正在谈论)使用键码96,这不包括在你的陈述中。您已经考虑了正常0(键码48),但不是96。
下面更新的codepen将更好地跨平台工作,因为实现拼写检查等功能的平台将返回键码0或229,而不是您之后的代码。