Javascript 按Enter键输入文本时防止表单提交
我知道以前有人问过这个问题,但我找不到一个适合我情况的满意答案。所以我再次问 我有一个简单的表单,有两个文本框和一个提交按钮。在用户在任一文本框中输入文本后,他们不能通过Enter键提交,只有submit按钮才允许他们提交。我认为捕获enter键并从onChange事件处理程序返回false会起到作用,但显然不行,这仍然会导致表单提交Javascript 按Enter键输入文本时防止表单提交,javascript,html,forms,Javascript,Html,Forms,我知道以前有人问过这个问题,但我找不到一个适合我情况的满意答案。所以我再次问 我有一个简单的表单,有两个文本框和一个提交按钮。在用户在任一文本框中输入文本后,他们不能通过Enter键提交,只有submit按钮才允许他们提交。我认为捕获enter键并从onChange事件处理程序返回false会起到作用,但显然不行,这仍然会导致表单提交 function doNotSubmit(element) { alert("I told you not to, why did you do
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>
函数不提交(元素){
警惕(“我告诉过你不要,你为什么这么做?”);
返回false;
}
乔:
施莫伊:
我在Chrome和FF(最新版本)上进行了测试
你能告诉我如何防止表格提交吗
谢谢。我想这应该可以:
document.getElementById("myInput").onkeypress = function(e) {
var key = e.charCode || e.keyCode || 0;
if (key == 13) {
alert("I told you not to, why did you do it?");
return false;
}
}
如果包含“提交”按钮,则默认表单行为是按enter键提交。为了防止意外提交,您可以在onsubmit事件(表单a)中添加确认对话框。另一种选择是用您自己的(表格B)替换提交按钮。但是,用户需要单击按钮进行提交 运行代码段进行测试 (在Chrome、Firefox和IE 5-11中测试)
表格A:此表格按enter键提交
表格B:此表格仅在点击按钮时提交
要借助@Dasein的anwser,您希望阻止默认行为,而不是停止传播(即返回false):
document.getElementById(“myForm”).onkeypress=函数(e){
var key=e.charCode | | e.keyCode | | 0;
如果(键==13){
警惕(“我告诉过你不要,你为什么这么做?”);
e、 预防默认值();
}
}
乔:
施莫伊:
First的可能重复项,我想您需要的是onkeypress或onkeydown而不是onchange。其次,您的doNotSubmit
函数中的e
来自何处?不,很抱歉,它不起作用。表格仍然提交。但奇怪的是,我也没有看到警报。是的,我确实将getElementbyId的参数更改为“JoetText”。奇怪的是,它对我有效,您可以在这里查看:@Dasein和devkaoru,我认为您的建议会起作用,但现在当我按原样插入javascript时,它会使我的页面加载出现错误“document.getElementbyId(…)为null”。知道为什么会发生这种情况吗?我确信表单“myForm”的名称是正确的?您的脚本很可能是在DOM准备就绪之前加载的。使用on ready事件来防止此情况: