如何阻止Enter按钮在Firefox 12中运行其默认行为?

时间:2012-04-27 16:17:32

标签: javascript jquery asp.net firefox enter

我有一个用ASP.NET构建的表单。第一个控件允许用户从自动完成列表中选择一个人。当用户按下Enter键时,它将刷新页面并复制通过第一个控件获取的任何信息。我试图从刷新页面中删除enter键的功能。此代码均适用于Chrome和IE7 / 8/9(不关心6)。我需要的只是返回false,因为它可以在我们支持的除Firefox之外的所有浏览器中工作。 .click()是一个奖励,可以将一些可用性添加回密钥(这样它将激活控件并选中或取消选中复选框等)。

这在Firefox 12中都不起作用。发生了点击(证明我希望它到达代码),但页面每次刷新一次。

focusNextInputfield()是来自类似问题的建议之一,并没有做我想做的任何事情。它可能已经完成了它的目的,但我无法分辨,因为页面刷新了。

我发现了自己的另一个类似问题的preventDefault()和stopPropagation(),它在FF中没有做任何事情。

我甚至尝试过回归真实。

   $(document).keydown(function (event) {
   //handles what happens when the user hits enter
       if (document.activeElement.nodeName !== 'TEXTAREA') {
           if (event.keyCode === 13 || event.which === 13) {
                $(document.activeElement).click();
               // $(document.activeElement).focusNextInputField();
                event.preventDefault();
                event.stopPropagation();
                return false;
           }
       }
    }); 

我只是在寻找任何有关FireFox 12没有任何影响的建议或新闻?而且我知道代码已经到达并且所有代码都正常运行而且没有错误,即使使用了所有多余的代码,它仍然可以在Chrome和IE 7/8/9中正常运行,如我所说。

通过早期的迭代,我尝试强制单击提交按钮,但仍然会刷新并进行验证,总体上是糟糕的用户体验。

1 个答案:

答案 0 :(得分:2)

看起来你正在使用jQuery所以你只需要在表单提交事件中阻止默认。

$j("#form-id").submit(function(e) {
    e.preventDefault();
    ...
});

或者:

$j("#form-id").submit(false);