我知道之前已经问过这个问题,但我找不到满意的答案。所以我再问一次。
我有一个带有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(最新版本)上进行了测试。
您能告诉我如何阻止表单提交吗?
感谢。
答案 0 :(得分:17)
捎带@ Dasein的anwser你要阻止默认行为而不是停止传播(即返回false):
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;
答案 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>