首页 > 解决方案 > 按键“输入”上的引导模式仅在 Firefox 上进行回发

问题描述

我在 MVC 中有一个部分视图,它在页面上显示为引导模式,并且该页面也有一个 POST 操作。目前,当页面上显示弹出窗口时,至少在 chrome 中不允许用户按下不执行任何操作的 Enter 键。但是,如果我在 firefox 上,那么在模式上按回车键会在父页面上回发并将它们带到下一页。我确实处理了父页面上的按键事件,因此它禁用了在 chrome 上似乎可以正常工作的 enter 关键字,但在 Firefox 上却不行。

$(document).keypress(
            function (event) {
                if (event.which === '13') {
                    event.preventDefault();
                }
            });

我究竟做错了什么?Firefox 有什么问题,该脚本要么被避免,要么不起作用?如果我需要提供其他信息,请告诉我。

标签: jquerymodel-view-controllerbootstrap-modal

解决方案


所以我能够弄清楚这一点。我的场景是我在 MVC 中有一个表单,在该表单中我有这个模式弹出窗口,当点击页面上的按钮时我会显示它。持有弹出窗口的页面有一个 POST 动作,所以当在弹出窗口中按下回车键时,会触发 post 动作。在 Page.cshtml 上,当弹出窗口打开时,我禁用了表单的提交。

var shouldPrevent = false;
        $(function () {
            $("form").submit(function (e) {
                if (shouldPrevent)
                    e.preventDefault();
            })
            $('#modalpopup').on('hidden.bs.modal', function (e) {
                shouldPrevent = false;
            })
        });
$('.btnToShowPopup').click(function (e) {
  e.preventDefault();
  shouldPrevent = true;
 });
        

这样做,只要单击按钮以显示模式,表单提交就会被禁用。当模式关闭时,提交按钮被启用。利用 bootstrap 3 模式事件处理程序。这解决了我的问题,即页面发布操作在模态时甚至被 Enter 关键字击中。

谢谢!


推荐阅读