如何通过点击“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”键!!
答案 0 :(得分:1)
使用e.which
某些浏览器使用keyCode
而其他浏览器则使用which
。但是对于jQuery
,这是标准化的,因此您不必考虑这一点。你可以选择你喜欢的那个。
if (e.which == 13) {
e.preventDefault();
}
参见 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();
}
});