我在MVC中有一个局部视图,该局部视图在页面上显示为引导模式,并且该页面还具有POST操作。当前,当页面上显示一个弹出窗口时,至少不允许使用chrome的用户按Enter键,该键不会执行任何操作。但是,如果我使用的是Firefox,则在模式对话框中按Enter键会在父页面上进行回发,并将其带到下一页。我确实在父页面上处理了keypress事件,因此它禁用了在chrome上可以正常运行的enter关键字,但在Firefox上却无法正常工作。
$(document).keypress(
function (event) {
if (event.which === '13') {
event.preventDefault();
}
});
我在做什么错?在firefox中,避免或不执行此脚本有什么用?让我知道是否需要提供其他信息。
答案 0 :(得分:0)
所以我能够弄清楚这一点。我的情况是我在MVC中有一个表单,在该表单中有此模式弹出窗口,当单击页面上的按钮时将显示该模式。包含弹出窗口的页面具有POST操作,因此在弹出窗口中按Enter键时,将触发发布操作。在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关键字击中页面发布动作。
谢谢!