Javascript 按键事件不在chrome中生成,但在ie和ff中有效
这个问题以前被问过很多次,但我发现没有一个答案能解决我的问题 从一个经典的asp页面,我调用了一个Javascript函数 在我的每一页上。关键是当用户输入搜索文本并按enter键时启动搜索按钮,而不是单击按钮或从Ajax提供的选项中进行选择 这在IE和FF中效果很好,就像在这些方面提出的所有其他问题一样 下面是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
编辑以下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
};
};