【问题标题】:How do I prevent the Enter button from running its default behavior in Firefox 12?如何防止 Enter 按钮在 Firefox 12 中运行其默认行为?
【发布时间】:2012-05-08 09:58:23
【问题描述】:

我有一个用 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 中正常运行,正如我所说的。

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

【问题讨论】:

    标签: javascript jquery asp.net firefox enter


    【解决方案1】:

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

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

    或者:

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

    【讨论】:

    • 这不会永远不允许您提交吗?甚至点击?
    • 是的。你需要添加一个观察者来事件点击按钮并做你想做的事。
    • 我不太清楚为什么,但我做到了$(document).submit(function (e) { e.preventDefault() }); 而且我不需要做任何特别的事情来保持表单按预期运行并解决问题。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多