按Enter键时阻止表单提交

时间:2010-05-10 13:20:53

标签: javascript html

我有一个带有禁用提交按钮的表单。即使用户无法按下此按钮,他仍然可以按Enter键提交表单。我该如何预防?

7 个答案:

答案 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;">很有用。