我在页面中有以下 JavaScript 代码,似乎没有起作用。
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
我想禁用按下回车键提交表单,或者更好的解决方案是调用我的Ajax表单提交。这两种解决方案都可以接受,但我上面包含的代码无法阻止表单提交。
我在页面中有以下 JavaScript 代码,似乎没有起作用。
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
我想禁用按下回车键提交表单,或者更好的解决方案是调用我的Ajax表单提交。这两种解决方案都可以接受,但我上面包含的代码无法阻止表单提交。
如果没有捕获keyCode
,则捕获which
:
$('#formid').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.preventDefault();
return false;
}
});
编辑:错过了,最好使用 keyup
而不是 keypress
编辑2:由于某些新版本的Firefox无法阻止表单提交,因此更安全的做法是将 keypress
事件添加到表单中。另外,它不能(再次?)通过仅将事件绑定到表单“名称”来工作,而只能绑定到表单 ID。因此,我通过适当更改代码示例来更明显地显示出这一点。
编辑3:将 bind()
更改为 on()
e.which
,因此您无需测试e.keyCode
,但是对于此问题最有可能的原因需要加1。 - Bojanglesreturn false;
吗?e.preventDefault();
已足够。 - chromigokeyCode === 13 && !$(e.target).is('textarea')
- teran通常情况下,当您在输入元素上聚焦时,按下Enter键会提交表单。
我们可以禁用表单内输入元素上的Enter键(代码13
):
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
textarea
中使用回车键。使用$("form input")
代替$("form :input")
似乎可以解决这个问题。演示:http://jsfiddle.net/bnx96/279/ - shaneparsons更短:
$('myform').submit(function() {
return false;
});
function(e) {e.preventDefault();}
。参考链接:https://dev59.com/smIj5IYBdhLWcg3wpWhx#20045473 - fluonClick
事件来验证表单,并仍然使用jQuery进行提交。换句话说,有时您只想通过javascript / jQuery提交。尽管您仍然可以在此解决方案中使用AJAX,但它会禁用submit
方法的基本功能。 - JRad the Bad$('form').keyup(function(e) {
return e.which !== 13
});
event.which 属性会将 event.keyCode 和 event.charCode 规范化。建议使用 event.which 监听键盘输入。
$(document).on('keyup keypress', 'form input[type="text"]', function(e) {
if(e.which == 13) {
e.preventDefault();
return false;
}
});
这个解决方案适用于网站上的所有表单(包括使用ajax插入的表单),只防止在输入文本中按Enter键。将其放置在文档就绪函数中,就可以忘记这个问题一辈子。
大多数上面的回答都会防止用户在文本区域字段中添加新行。如果这是您想要避免的情况,您可以通过检查当前具有焦点的元素来排除此特定情况:
大多数以上的回答都会防止用户在
如果你只想禁用回车键提交表单和提交按钮,可以使用表单的onsubmit事件
<form onsubmit="return false;">
您可以将"return false"替换为调用JavaScript函数,该函数将执行所需的操作并在最后一步提交表单。To this:
Then add event in JS...
<form id="myForm">
<button type="submit">Submit</button>
</form>
为了
<form id="myForm">
<button type="button" id="btnSubmit">Submit</button>
</form>
然后在js或者jquery中添加:
$("#btnSubmit").click(function () {
$('#myForm').submit();
});
<input type="submit">
),这样以上行为将失败,因为没有魔法般的提交按钮可以在按下回车键时自动点击。相反,我使用jQuery click处理程序在常规按钮上,通过jQuery的.submit()
方法提交表单。<form id="myform" method="post">
<input name="fav_color" type="text">
<input name="fav_color_2" type="text">
<button type="button" id="form-button-submit">DO IT!</button>
</form>
<script>
$('#form-button-submit').click(function(){
$('#myform').submit();
});
</script>
演示: http://codepen.io/anon/pen/fxeyv?editors=101
如果表单只有一个输入字段且该字段是“文本”输入,则不适用此行为; 在这种情况下,即使HTML标记中没有提交按钮(例如搜索字段),按下ENTER键也会提交表单。自90年代以来,这一点已成为标准浏览器行为。
您可以通过纯JavaScript轻松完成此操作,无需使用任何库。以下是我对类似主题的详细回答: Disabling enter key for form
简而言之,代码如下:
<script type="text/javascript">
window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true);
</script>
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
。使用指定的代码,如果选中了单选框或复选框,则允许提交表单。 - afnpires