我有一个带有禁用提交按钮的表单。即使用户无法按下此按钮,他仍然可以按Enter键提交表单。我该如何预防?
答案 0 :(得分:26)
如果你想完全禁用表单提交(但我想知道为什么整个<form>
元素就在那里),那么你需要让它{{1事件处理程序返回submit
。
所以,基本上:
false
您可以在onload期间使用Javascript / DOM操作添加它,正如之前的回答者指出的那样。
如果您仅想要禁用 Enter 键来提交表单,那么您需要让其<form onsubmit="return false;">
事件处理程序返回keypress
当密码与false
匹配时(这个与浏览器兼容!)。
13
但是,这也会禁用表单中任何<form onkeypress="return event.keyCode != 13;">
元素中的 Enter 键。如果您有任何这些内容并希望保持其正常运行,那么您需要从<textarea>
中移除onkeypress
并将其复制到所有<form>
和<input>
元素。 jQuery可以对此有所帮助:
<select>
答案 1 :(得分:10)
假设HTML:
<form id="myForm"> ...
您可以使用JavaScript执行此操作:
document.getElementById("myForm").onsubmit = function () {
return false;
};
答案 2 :(得分:7)
不是实现两种禁用表单提交的方法,而是在表单的onsubmit中添加一个事件处理程序,它将检查按钮的disabled
属性:
myForm.onsubmit = function () {
if (myForm.mySubmit.disabled)
return false;
}
答案 3 :(得分:3)
假设你有一个id为“myForm”的表单:
<form id="myForm" action="some_file" method="post">
...
</form>
<script type="text/javascript">
document.getElementById( "myForm").onsubmit = function() {
return false;
};
//or with jQuery: $( '#myForm' ).submit( function() { return false; } );
</script>
答案 4 :(得分:3)
如果您不想编辑表单的onsubmit事件,可以这样做。
将其添加到文本输入:
onKeyPress="return noEnter(event)"
这是标题:
function noEnter(e) { var key; // firefox vs. ie (window.event) ? key = window.event.keyCode : key = e.which; (key == 13) ? return false : return true; }
更容易用jquery拉。
答案 5 :(得分:3)
jQuery解决方案:
$(document).ready(function(){
$('form[name="form"]').keypress( function(evt){
return !(evt.which==13 && evt.target.type!='textarea');
});
$('form[name="form"] input[type="submit"]').attr('tabIndex',-1); // this prevents submit also by spacebar (keyCode==32)
//$('form[name="form"]').submit(function(){ alert('test'); return false; }); // test
});
答案 6 :(得分:1)
document.getElementById("myForm").onsubmit = function () {
return false;
};
这些代码不适用于Chrome和Safari。它将表单提交给操作URL。
但<form onsubmit="return false;">
很有用。