自动进度输入字段删除Firefox中的� 0

时间:2016-04-13 02:16:13

标签: javascript jquery html

我为用户构建了一个系统,用于输入信用卡号,银行代码编号,两步代码等。达到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;
        }
    });

我是否以某种方式写过这种行为?还是我遇到了一个错误?谢谢!

1 个答案:

答案 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,而不是您之后的代码。

http://codepen.io/anon/pen/eZMmQN