1

I use the following function for decimal validation it was work fine in IE and Chrome not in FF.Backspace and delete key working in IE and Chrome.Not in 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;
        }

this if condition not working in FireFox only.this is used to enter the only one dot symbol

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

2 回答 2

2

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

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

总结:更改(event.which == 8 || event.which == 46)(event.keyCode == 8 || event.keyCode == 46)其余部分不变。

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

于 2012-06-29T08:28:06.013 回答
1

$('#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();
    }
});

于 2017-05-19T16:33:18.207 回答