Ada*_*itt 197 javascript forms jquery form-submit
我的页面中有以下javascript似乎不起作用.
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
我想禁止在输入时提交表单,或者更好的是,调用我的ajax表单提交.这两种解决方案都是可以接受的,但我上面提到的代码并不能阻止表单提交.
zes*_*ssx 404
如果keyCode没有被捕获,请抓住which:
$('#formid').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.preventDefault();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:错过了,最好用keyup而不是keypress
编辑2:与一些较新版本的Firefox一样,表单提交没有被阻止,将keypress事件添加到表单也更安全.它也不起作用(不再?)只是将事件绑定到表单"name"但仅限于表单id.因此,我通过适当地更改代码示例使这一点变得更加明显.
编辑3:更改bind()到on()
Vis*_*ioN 59
通常Enter在您关注输入元素时提交表单.
我们可以在表单中的输入元素上禁用Enter键(代码13):
$('form input').on('keypress', function(e) {
return e.which !== 13;
});
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/bnx96/325/
小智 41
更短:
$('myform').submit(function() {
return false;
});
Run Code Online (Sandbox Code Playgroud)
gdo*_*ica 23
$('form').keyup(function(e) {
return e.which !== 13
});
Run Code Online (Sandbox Code Playgroud)
该event.which财产归event.keyCode和event.charCode.建议观看event.which键盘输入键.
Buz*_*zlo 14
$(document).on('keyup keypress', 'form input[type="text"]', function(e) {
if(e.which == 13) {
e.preventDefault();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
此解决方案适用于网站上的所有表单(也适用于使用ajax插入的表单),仅防止输入文本中的输入.将它放在文档就绪功能中,并终生忘记这个问题.
简单的方法是将按钮的类型更改为按钮 - 在 html 中,然后在 js 中添加事件...
从此改变:
<form id="myForm">
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
到
<form id="myForm">
<button type="button" id="btnSubmit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
并在 js 或 jquery 添加:
$("#btnSubmit").click(function () {
$('#myForm').submit();
});
Run Code Online (Sandbox Code Playgroud)
上面的大多数答案将阻止用户在textarea字段中添加新行.如果您想避免这种情况,可以通过检查当前具有焦点的元素来排除此特定情况:
var keyCode = e.keyCode || e.which;
if (keyCode === 13 && !$(document.activeElement).is('textarea')) {
e.preventDefault();
return false;
}
Run Code Online (Sandbox Code Playgroud)
必须捕获并测试ENTER键的每次击键的过度杀戮真的让我感到困惑,所以我的解决方案依赖于以下浏览器行为:
按ENTER将触发提交按钮上的单击事件(在IE11,Chrome 38,FF 31中测试)**(参考:http://mattsnider.com/how-forms-submit-when-pressing-enter/)
所以我的解决方案是删除标准提交按钮(即<input type="submit">),以便上述行为失败,因为按下ENTER时没有提交按钮可以神奇地点击.相反,我在常规按钮上使用jQuery单击处理程序通过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>
Run Code Online (Sandbox Code Playgroud)
演示:http://codepen.io/anon/pen/fxeyv?编辑= 101
**如果表单只有1个输入字段且该字段是"文本"输入,则此行为不适用; 在这种情况下,即使HTML标记中没有提交按钮(例如搜索字段),表单也将在ENTER键上提交.这是自90年代以来的标准浏览器行为.
如果您只想在输入和提交按钮上禁用提交,请使用表单的onsubmit事件
<form onsubmit="return false;">
Run Code Online (Sandbox Code Playgroud)
您可以将“ return false”替换为对JS函数的调用,该函数将执行所需的任何操作,并作为最后一步提交表单。
您可以在纯 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>
Run Code Online (Sandbox Code Playgroud)
此代码仅用于防止输入 type='text' 的“Enter”键。(因为访问者可能需要在整个页面上按回车)如果您还想为其他操作禁用“回车”,您可以添加 console.log(e); 为了您的测试目的,在 chrome 中点击 F12,转到“控制台”选项卡并点击页面上的“退格”并查看内部以查看返回的值,然后您可以定位所有这些参数以进一步增强代码以上以满足您对"e.target.nodeName"、"e.target.type"等的需求...