IE11 检测回车键是否被按下

3

我在一个ASP MVC页面中有以下的代码:

 $('#regForm').submit(function (event) {
            if (event.keyCode == '13') {
                event.preventDefault();
            }
        });  

目的是防止按下回车键时表单提交。
我们注意到在ie 11中,这个功能不起作用,并且通过调试进入代码,event.keycodenull。我已经对此进行了一些研究,看起来这是一个问题,因为我们在页面上有IE-8兼容性元标记,这意味着event.keyCode(和event.which)返回事件的undefined,所以我的表单总是被提交。
那么,我该如何重写代码来解决这个问题?

你能否移除IE-8兼容性元标签并查看是否有效? - lshettyl
为什么不直接将 click 事件绑定在提交按钮上? - Hacketo
@Hacketo 因为表单也可能通过键盘提交吗? - cyberskunk
@cyberskunk “目的是防止在按下回车键时提交表单”,我不知道还有哪个键可以触发表单的提交。 - Hacketo
@Hacketo 但是 click 和按下 Enter 有什么关系呢? - cyberskunk
4个回答

1
你需要使用keypress事件,而不是表单提交。
$('#regForm').keypress(function (event) {
    if (event.keyCode == 13) {
        event.preventDefault();
    }
});

0

不幸的是,这是一个文本框,人们正在按回车键,所以那样做行不通。(我的问题没有说明清楚,抱歉) - Matt

0
尝试这样做,使用window.event:
 $('#regForm').submit(function (e) {
     var keyCode = (window.event) ? e.which : e.keyCode;

                if (keyCode == '13') {
                    e.preventDefault();
                }
            });  

那对我没用,我之前在S.O.上找到了一个类似的解决方案,但我仍然得到了null。 - Matt
@Matt 好的,我相信它应该可以工作。不过我看你已经找到了解决方案 :) - Michelangelo

0
 $('#regForm').keypress((event) => {
   if (event.key === "Enter") {
     event.preventDefault();
   }
 });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接