javascript - javascript 退格和删除在 IE 中工作,而不是在 FireFox 中工作

标签 javascript internet-explorer firefox google-chrome backspace

我使用以下函数进行十进制验证,它在 IE 和 Chrome 中运行良好,但在 FF 中运行良好。退格键和删除键在 IE 和 Chrome 中运行。在 FireFox 中运行不正常

    $('.decimalValidate').live('keypress', function (e) {
        var decimalid = $(this).attr("id");
        var decimalval = $('#' + decimalid).val();

        var decimalvalidate = ApplyDecimalFilter(decimalval, e);
        if (decimalvalidate == false) return false;
    });



    function ApplyDecimalFilter(id, event)
        {
            try {
                return NewDecimalFilter(id, event);
            } catch (e) {
                alert(e.message);
            }
        }

    function NewDecimalFilter(o, event) {
            if (event.which > 47 && event.which < 58) {
                return true;
            }
            if (event.which == 50 ||(event.which == 8 || event.which == 46) && o.indexOf('.') == -1)  {
                return true;
            }
            return false;
        }

如果条件仅在 FireFox 中不起作用。这用于输入唯一的一个点符号

if (event.which == 50 ||(event.which == 8 || event.which == 46) && o.indexOf('.') == -1)  {
                return true;
            }

最佳答案

一般来说,这种类型的验证需要小心进行,因为可以通过键盘以外的方式将文本更改为输入(例如,粘贴、文本拖动和上下文菜单中的删除选项)。提交表单时,限制键盘输入仍需要伴随适当的验证。

使用 keyCode 检测实际按下的键(通常在 keydownkeyup 而不是 keypress 中)和which 检测输入的字符(仅在 keypress 事件中)。一般来说,查看 keypress 事件的 keyCode 属性不是一个好主意,但对于删除和退格的情况,这很好:并非所有浏览器都会触发 keypress 这些键的事件,但对于那些键,keyCode 属性是一致的。

总结:将 (event.which == 8 || event.which == 46) 更改为 (event.keyCode == 8 || event.keyCode == 46) 其他保持不变。

这是我见过的 JavaScript 关键事件的最佳引用:http://unixpapa.com/js/key.html

关于javascript - javascript 退格和删除在 IE 中工作,而不是在 FireFox 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257488/

相关文章:

javascript - pdf 不是使用 jspdf 生成的

javascript 真实数字

javascript - 如何通过 URI 引用外部二进制文件?

javascript - InnerHTML 更改适用于 Firefox,但不适用于 IE 9

css - 选中的按钮样式不会在 Firefox 中显示

javascript - Javascript 中链表和 Node 的问题

jquery - 无法使用 jQuery 正确设置 Accept HTTP header

html - 自定义选择框在 IE 中无法正常工作

javascript - Ajax 调用在 IE 和 Chrome 中有效(并且仅在 Firefox 中在 ajax 调用结束时在 Debug模式下添加断点时有效)

javascript - JS 无法在 Firefox 上运行