Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键事件不在chrome中生成,但在ie和ff中有效_Javascript_Google Chrome - Fatal编程技术网

Javascript 按键事件不在chrome中生成,但在ie和ff中有效

Javascript 按键事件不在chrome中生成,但在ie和ff中有效,javascript,google-chrome,Javascript,Google Chrome,这个问题以前被问过很多次,但我发现没有一个答案能解决我的问题 从一个经典的asp页面,我调用了一个Javascript函数 在我的每一页上。关键是当用户输入搜索文本并按enter键时启动搜索按钮,而不是单击按钮或从Ajax提供的选项中进行选择 这在IE和FF中效果很好,就像在这些方面提出的所有其他问题一样 下面是Javascript。谁能告诉我如何让它在Chrome以及IE和FF上工作 编辑以下Alexander O'Mara回答表: 将页面上的body标记中的函数调用更改为使用onkeyu

这个问题以前被问过很多次,但我发现没有一个答案能解决我的问题

从一个经典的asp页面,我调用了一个Javascript函数

在我的每一页上。关键是当用户输入搜索文本并按enter键时启动搜索按钮,而不是单击按钮或从Ajax提供的选项中进行选择

这在IE和FF中效果很好,就像在这些方面提出的所有其他问题一样

下面是Javascript。谁能告诉我如何让它在Chrome以及IE和FF上工作


编辑以下Alexander O'Mara回答表:

将页面上的body标记中的函数调用更改为使用onkeyup而不是onkeypress-onkeyup=“KeyPress(事件)”

修改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.dvdorch.com.au。到达时,您的光标将位于搜索框中-输入一个大于3个字符的单词,然后按enter键,如果您停留在页面上,它不起作用,如果您移动到productfound.asp页面,它起作用

再次感谢。

您正在寻找活动()。
keypress
事件在不同浏览器中不一致。有关差异的信息,请参阅

更新:

由于您正在使用jQuery,还可以删除正文的
onkeyup=“KeyPress(event)”
属性,并将
KeyPress
函数替换为以下内容(将内容替换为事件处理代码)

使用
onkeyup


这应该在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
    };
};

“关键是当用户输入搜索文本并按enter键时启动搜索按钮。”当用户在其文本字段中按enter键时,表单将提交。不需要javascript。您是否已将要触发的事件绑定到单击按钮而不是提交表单?这是一个常见错误。在函数的前两行之后,
ev
包含
e
window.event
。因此,您以后不需要检查
window.event
。您会注意到,
btnSearch
$(“#btnSearch”)
不是一回事,因此我怀疑这就是您的问题所在。谢谢-这是一个简单的解决方案,在我的body语句中使用onkeyup而不是onkeypress。Javascript本身就很好,尽管不会比必须的更长。都修好了。但是等等,它不是一直工作吗?目前无法在我的Chrome默认页面上运行。它是如何在某些时候起作用而在其他时候不起作用的?目前,我从body语句调用——我已经更新了上面的javascript函数。非常令人沮丧-有人能帮忙吗?@user3594771也许您的页面上有冲突的代码?你可以用一个例子来提问。嗨,亚历山大,谢谢你的坚持。你可以在我的网站上找到一个例子——dvdorch.com.au。然而,整个事情仍然存在不一致性,有些时候有效,而不是其他时候,而内容没有改变?@user3594771:似乎每次对我都有效。由于您正在使用jQuery,请考虑使用<代码> $(window).KyUp(函数(e){/*事件处理代码在这里*/});代码>。在HTML中使用像
onkeyup
这样的JavaScript属性被认为是不好的做法,因为这样一个脚本很容易与另一个脚本冲突。
  if(e.keyCode)
  {
    key= e.keyCode;
  }
  else
  {
    key = e.charCode;
  }
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
    };
};