FF中的Javascript事件键属性混合

FF中的Javascript事件键属性混合,javascript,firefox,form-submit,Javascript,Firefox,Form Submit,这确实是一个奇怪的错误。在Chrome(6.0.472.62,最新版本)和IE8(至少)中,这种行为是正确的,但在FF(3.6.9,最新版本)中,click事件和enter事件寄存器都存在,因此很难区分这两种行为 查看此代码:,单击“结果”中的搜索框,然后按enter键。下面的结果应该注册单击事件:1输入事件:13,这显然是不正确的 我的页面上的点击事件和输入事件发生了不同的事情,所以当输入事件注册为点击事件时,你可以想象挫折感 任何人都有一个聪明的解决方案吗?您将事件绑定到“#按钮”,应该是“

这确实是一个奇怪的错误。在Chrome(6.0.472.62,最新版本)和IE8(至少)中,这种行为是正确的,但在FF(3.6.9,最新版本)中,click事件和enter事件寄存器都存在,因此很难区分这两种行为

查看此代码:,单击“结果”中的搜索框,然后按enter键。下面的结果应该注册
单击事件:1
输入事件:13
,这显然是不正确的

我的页面上的点击事件和输入事件发生了不同的事情,所以当输入事件注册为点击事件时,你可以想象挫折感


任何人都有一个聪明的解决方案吗?

您将事件绑定到“#按钮”,应该是“#搜索”

clickEvent
中,您可以检查
e.pageX
e.pageY
以确保它们有值来查看是否实际单击了它

if (e.pageX == 0 && e.pageY == 0) {
    return;
}
但这也会影响通过空格键“点击”按钮。如果不行,则需要将空格键单独绑定到按钮

$('#button').keyup(function (e) {
    if (e.which == 32) {
        // do something
    }
}

好吧,当你的按钮被隐藏时,我只得到enter事件,而不是Chrome中的click事件。然而,当我显示按钮时,我得到了两个。我还在按钮和输入之间插入了一个按钮,这使得它不会触发click事件


我相信这是一种提交表单的快捷方式,您可以像其他人发布的那样进行变通,但我不认为这是一个真正的“问题”。

我知道,我要说的是,我有两个事件绑定到两个单独的输入。问题是两个火灾都有两个不同的事件代码FF@Jason,您应该修改您的示例以匹配您的问题。您正在绑定keyup事件,而不是输入事件。我在chrome和firefox中得到了完全相同的行为。这个例子显然是人为的。在我的实际代码中,我根据enter键
key==13
进行筛选。对于这个快速生成的示例,我只是捕获任何键。在jquery或javascript中无法本机捕获enter-press,据我所知,正如问题中所述,这在Firefox中是一个真正的问题。我知道Chrome/IET中的行为是正确的。在某些情况下,Chrome中仍会触发单击事件,我相信这是故意的。这很疯狂,但它可以工作。。。我想有一个更,呃,“正确”的方法来解决这个问题,但就目前而言,这个就行了。谢谢我认为“正确”的方式是FF不启动该活动。但是,检查鼠标位置应该是可靠的。