jquery - 按键“输入”上的引导模式仅在 Firefox 上进行回发
问题描述
我在 MVC 中有一个部分视图,它在页面上显示为引导模式,并且该页面也有一个 POST 操作。目前,当页面上显示弹出窗口时,至少在 chrome 中不允许用户按下不执行任何操作的 Enter 键。但是,如果我在 firefox 上,那么在模式上按回车键会在父页面上回发并将它们带到下一页。我确实处理了父页面上的按键事件,因此它禁用了在 chrome 上似乎可以正常工作的 enter 关键字,但在 Firefox 上却不行。
$(document).keypress(
function (event) {
if (event.which === '13') {
event.preventDefault();
}
});
我究竟做错了什么?Firefox 有什么问题,该脚本要么被避免,要么不起作用?如果我需要提供其他信息,请告诉我。
解决方案
所以我能够弄清楚这一点。我的场景是我在 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 关键字击中。
谢谢!
推荐阅读
- powershell - 2goarray 适用于 cmd 但不适用于 powershell
- avro - Rsyslog avro 日志解码失败
- php - PHP 登录页面因 root 用户错误而拒绝访问,并期望参数 1 为 mysqli,bool 给定
- javascript - 使用 java 脚本动态地将 2 个单元格相乘并在第三个单元格中显示结果
- angular - 有什么方法可以将 agm-polyline 放入 Angular 7 中的地图内
- c# - 基于分配给其他节点的重要性分数的节点排名/分类
- android - 在设备设置的应用程序管理器中禁用或删除“卸载”、“强制停止”按钮
- javascript - 将 DatePicker 中的日期保存在 cookie 中并将日期发送到 Datatable
- html - 阻止直接访问 mp4 视频,同时允许他们使用 web.config 在网站内查看
- sql - SQL 语句中是否加入