通过按Enter键阻止用户提交表单

时间:2013-10-18 13:31:52

标签: javascript jquery forms preventdefault enter

如何通过点击“Enter”键来阻止用户提交联系表格? 此表单是使用FormMaster模块制作的。输入字段的代码如下:

<div id="dnn_ctr1410_FormMaster_ctl_9d6e1fc4341b453f905425dacbefddf2div">
    <label class="SubHead" id="dnn_ctr1410_FormMaster_lbl_ctl_9d6e1fc4341b453f905425dacbefddf2" for="dnn_ctr1410_FormMaster_ctl_9d6e1fc4341b453f905425dacbefddf2">Message*<br></label>
    <textarea class="wsi_contactform_bottomcell" tabindex="1" id="dnn_ctr1410_FormMaster_ctl_9d6e1fc4341b453f905425dacbefddf2" wrap="off" cols="20" rows="2" name="dnn$ctr1410$FormMaster$ctl_9d6e1fc4341b453f905425dacbefddf2"></textarea>
    <span style="display:none;" class="NormalRed" id="dnn_ctr1410_FormMaster_rfv_313f9f05e5224c4e9bbf2bf6808f43c9"><br>Enter your message.</span>
</div>

我使用了以下脚本,但没有任何结果:

$('.wsi_contactform_bottomcell').on('keypress keydown keyup', function (e) {
    if (e.keyCode == 13) {
        e.preventDefault();
    }
});

输入我的意思是键盘上的“Enter”键!!

4 个答案:

答案 0 :(得分:1)

使用e.which

某些浏览器使用keyCode而其他浏览器则使用which。但是对于jQuery,这是标准化的,因此您不必考虑这一点。你可以选择你喜欢的那个。

if (e.which == 13) {
        e.preventDefault();
    }

参考event.which

参见 demo

答案 1 :(得分:0)

为什么不忽略按键并删除提交按钮。而不是添加一个this.submit()按钮。像这样:

<input type="button" value="Submit contactform" onclick="this.submit();">

这将从表单中删除“回车键”功能。

答案 2 :(得分:0)

我过去做过这件事,对我来说效果很好。这将禁用整个页面的Enter键的任何效果:

<script language="JavaScript">

function disableEnterKey(e)
{
     var key;    
     if(window.event)
          key = window.event.keyCode;
     else
          key = e.which;

     return (key != 13);
}
</script>

<body onKeyPress="return disableEnterKey(event)">

如果要禁用特定输入字段的表单提交,请从输入字段的onKeyPress处理程序中调用它:

<input type="text" name="foo" onKeyPress="return disableEnterKey(event)" >

修改

具体到你:

$('.wsi_contactform_bottomcell').on('keypress', disableEnterKey);

如果从未调用过脚本,那么您可能会尝试过早地绑定处理程序。如果模块尚未添加textarea,则当选择器返回零结果时,jQuery将无声地失败。如果是这种情况,那么在尝试绑定事件处理程序之前,您需要提出一个策略来确定模块何时完成对DOM的更新。

答案 3 :(得分:0)

试试这个,如果元素是动态创建的,那么你的代码将不起作用,因为该元素不存在。

$(document).on("keydown", ".wsi_contactform_bottomcell", function(e) { 
   if (e.keyCode == 13 || e.which == 13) {
    e.preventDefault();
   }
});