firefox中的退格键问题

时间:2015-07-23 07:11:28

标签: javascript jquery firefox

我有一个文本框,仅使用jquery应用了允许带空格的字母。它在chrome中工作但在firefox中,退格键不起作用。

<input type="text" placeholder="" id="id1">

$(function(){
$('#id1').keypress(function (event) {
      if ((event.which >= 65 && event.which < 91) || (event.which > 96 && event.which < 123) || event.which === 32 || event.which===0) {
          return true;
      }
        else {
          event.preventDefault();
      }
 })});

这是Plnkr

2 个答案:

答案 0 :(得分:11)

浏览器处理退格字符的方式不同。在Chrome中,退格键永远不会进入keypress事件处理程序,但在Firefox中它确实如此。

如果你将|| event.which === 8添加到条件中,你将允许退格并返回true,这将使它在Firefox中运行。

编辑:箭头向上,向下,向左,向右和制表符在Firefox中也不起作用。

var ignoredKeys = [8, 9, 37, 38, 39, 40];

if (ignoredKeys.indexOf(event.which) >=0 || (event.which >= 65 && event.which < 91) || (event.which > 96 && event.which < 123) || event.which === 32 || event.which===0) {
    return true;
} else {
    event.preventDefault();
}

答案 1 :(得分:1)

这适用于所有[主要]浏览器:

$('#id1').keydown(function (event) {
    if (event.which == 8) {
        // ...
    } else {
        event.preventDefault();
    }
);

请注意使用keydown代替keypress,这对其起作用至关重要。