簡體   English   中英

java腳本退格和刪除在IE中工作,而不是在FireFox中

[英]java script backspace and delete working in IE,not in FireFox

我使用以下函數進行十進制驗證,它在IE中工作正常,Chrome不在FF.Backspace和刪除鍵工作在IE和Chrome.Not在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;
        }

此if條件僅在FireFox中不起作用。這用於輸入唯一的點符號

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

通常,這種類型的驗證需要謹慎進行,因為文本可以通過鍵盤以外的方式(例如粘貼,文本拖動和上下文菜單中的“刪除”選項)更改為輸入。 在提交表單時,限制鍵盤輸入仍需要伴隨正確的驗證。

使用keyCode ,用於檢測(通常在按壓實際鍵keydownkeyup而不是keypress )和which檢測輸入(只在字符keypress事件)。 一般來說,查看keypress事件的keyCode屬性並不是一個好主意,但對於delete和backspace的情況,它很好:並非所有瀏覽器都為這些鍵觸發了一個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(); } }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM