keypress事件不是在chrome中生成的,而是在ie和ff中工作

时间:2014-07-04 15:54:11

标签: javascript google-chrome

此问题之前已被问过很多次,但我找不到答案似乎解决了我的问题。

从经典的asp页面我称之为Javascript函数

在我的每个页面上。关键是当用户输入搜索文本并按Enter键时触发搜索按钮,而不是单击按钮,或从Ajax提供的选择中进行选择。

这在IE和FF中运行良好,就像这些问题所提出的所有其他问题一样。

这是Javascript。有人可以告诉我,如何让它适用于Chrome以及IE和FF?


以下是亚历山大·奥马拉的答案:

在页面上的body标签中更改函数调用以使用onkeyup而不是onkeypress - onkeyup =“KeyPress(event)”

改变了JS功能(也是在注意到其他人的重复意见之后 - 谢谢),如下所示:

function KeyPress(e)
{
var ev = e || window.event;
var key = ev.keyCode;

if(window.event) // IE
    {
    key = e.keyCode;     
    if (key == 13)
        {
        window.event.keyCode = 0;
        $('#btnSearch').click();
        }
    }
else if (key == 13)
    {
    btnSearch.click();
    ev.preventDefault(); 
    }
 }

它似乎有时候工作而不是其他工作,目前很少在chrome上工作。是否有保证让它一直工作的方法?

如果您想亲自试用,我网站的主页是www.dvdorchard.com.au,您的光标将在到达时位于搜索框中 - 输入一个单词> 3个字符并按回车键,如果你停留在页面上它不起作用,如果你移动到它运作的productfound.asp页面。

再次感谢。

3 个答案:

答案 0 :(得分:0)

您正在寻找keyup事件(documentation)。 keypress事件在各种浏览器中都不一致。有关差异的信息,请参阅this question

<强>更新

由于您使用的是jQuery,因此您还可以删除身体的onkeyup="KeyPress(event)"属性,并将KeyPress函数替换为以下内容(用事件处理代码替换内容)。

$(window).keyup(function(e){
    /*YOUR CODE HERE*/
});

答案 1 :(得分:0)

  if(e.keyCode)
  {
    key= e.keyCode;
  }
  else
  {
    key = e.charCode;
  }

使用onkeyup

解雇您的活动

read more

答案 2 :(得分:0)

这应该适用于chrome。我不知道其他浏览器

function code(e) {
    e = e || window.event;
    return(e.keyCode || e.which);
}
window.onload = function(){
    document.onkeypress = function(e){
        var key = code(e);
        // do something with key

        // done doing something with key
    key=0
    };
};