java脚本退格键和删除在IE中工作,而不是在FireFox中工作

java script backspace and delete working in IE,not in FireFox

本文关键字:工作 FireFox 脚本 删除 java IE      更新时间:2023-09-26

我使用以下函数进行十进制验证,它在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

$('#Name_Var').keypress(function (event) {
    event = event || window.event;
    var charCode = event.which || event.keyCode;
    var charStr = String.fromCharCode(charCode);
    // FireFox key Del - Supr - Up - Down - Left - Right
    if (event.key !== undefined && event.charCode === 0) {
        return;
    }
    //Only Num
    if (!/^([0-9])*$/.test(charStr)) {
        event.preventDefault();
    }
    //Num and letters 
    if (!/^[a-zA-Z0-9]+$/.test(charStr)) {
        event.preventDefault();
    }
});