0

我有一个 javascript 函数,它拒绝除数字一个以外的任何字符:

$(".number").keypress(this.EnsureNumbers);

EnsureNumbers: function (event) {
   var value = $(this).first().val();

   value = value.substring(0, $(this)[0].selectionStart) + String.fromCharCode(event.keyCode) + value.substring($(this)[0].selectionEnd);
   if (!value.match(/^\d+$/)) {
      event.preventDefault();
   }
}

此功能允许用户(如果使用 Chrome/IE)选择数字的任何部分(通过使用 SHIFT 键)并更改所选数字/字母。

但在 Firefox 中,这种方法不允许我按 Backspace 或使用左/右键。

同样,在 Chrome 和 IE(甚至 IE8)中工作正常。有谁知道 Direfox 中的一个错误?还是来自我?

我有 Firefox 22。

例如,看一下:http: //jsfiddle.net/TR8t4/

4

2 回答 2

0

是的,这是 Firefox 中的一个错误。keypress当您使用编辑和箭头键时,它会触发事件。这些键应该触发keydown,但不是keypress

这种不正确的行为列在QuirksMode的兼容性矩阵中。

于 2013-08-06T07:19:45.267 回答
0

正如@Barmar 所说,这是 Mozilla FF 中的错误行为。

曾经我也遇到过这样的问题。但我通过检测像$.browser.mozilla. 虽然这在最新版本的 jQuery 中现在已经贬值了。

我所做的是在这里

$('selector').keypress(function(event){              
                if($.browser.mozilla == true){                      
                      if (event.keyCode  == 8 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 9 || event.keyCode == 16 || event.keyCode == 46){
                            return true;
                      }
                }
                if (event.which < 48 || event.which > 57) {                     
                    event.preventDefault();                    
                  }
            });

JSFiddle供你参考。

于 2013-08-06T07:30:23.207 回答