在按Enter键输入文本时阻止表单提交

时间:2015-05-21 21:21:39

标签: javascript html forms

我知道之前已经问过这个问题,但我找不到满意的答案。所以我再问一次。

我有一个带有2个文本框和提交按钮的简单表单。用户在任一文本框中输入文本后,他们无法通过Enter键提交,只有提交按钮才允许他们提交。我认为捕获回车键并从onChange事件处理程序返回false会做到这一点,但显然不是,这仍然会导致表单提交......

function doNotSubmit(element) {

        alert("I told you not to, why did you do it?");
        return false;

}
</script>


<form id="myForm" action="MyBackEnd.aspx" method="post">

<table>
    <tbody>
    <tr>
        <td>
          Joe:  <input id="JoeText" type="text" onChange="doNotSubmit(this)">
        </td>
        <td>
          Schmoe:  <input id="SchmoeText" type="text" onChange="doNotSubmit(this)"  >
        </td>
    </tr>
    </tbody>
</table>

<input type=submit>

我在Chrome和FF(最新版本)上进行了测试。

您能告诉我如何阻止表单提交吗?

感谢。

3 个答案:

答案 0 :(得分:17)

捎带@ Dasein的anwser你要阻止默认行为而不是停止传播(即返回false):

&#13;
&#13;
document.getElementById("myForm").onkeypress = function(e) {
  var key = e.charCode || e.keyCode || 0;     
  if (key == 13) {
    alert("I told you not to, why did you do it?");
    e.preventDefault();
  }
}
&#13;
<form id="myForm" action="MyBackEnd.aspx" method="post">

<table>
    <tbody>
    <tr>
        <td>
          Joe:  <input id="JoeText" type="text">
        </td>
        <td>
          Schmoe:  <input id="SchmoeText" type="text" >
        </td>
    </tr>
    </tbody>
</table>

<input type=submit>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

我认为应该这样做:

DECIMAL(M,D)

答案 2 :(得分:0)

如果您包含提交按钮,则默认表单行为是在输入密钥上提交。为了防止意外提交,您可以在onsubmit事件(表单A)中添加一个确认对话框。另一种方法是用您自己的(表单B)替换提交按钮。但是,用户需要单击按钮才能提交。

运行代码段进行测试 (在Chrome,Firefox和IE 5-11中测试)

<html>
<body>
Form A: This form submits on enter key    
<form action="handler.aspx" method="post" onsubmit="return confirm('submit form?')">
    <input type="text" >
    <input type="text" >
    <input type="submit">
</form>
<p>
Form B: This form submits only on button click<br>
<form action="hanlder.aspx" method="post" >
    <input type="text" >
    <input type="text" >
    <input type="button" value="submit" onclick="if (confirm('Submit form?')) document.forms[1].submit()">
</form>
    
</body>
</html>