3

我有一个用 ASP.NET 构建的表单。第一个控件允许用户从自动完成列表中选择一个人。当用户按下回车键时,它将刷新页面并复制通过第一个控件获取的任何信息。我试图从刷新页面中删除回车键的功能。此代码均适用于 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 中正常运行,正如我所说的。

通过较早的迭代,我尝试强制单击提交按钮,但无论如何它仍然刷新并经过验证,总体上是一个糟糕的用户体验。

4

1 回答 1

2

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

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

或者:

$j("#form-id").submit(false);
于 2012-04-27T16:29:05.490 回答