Javascript 没有操作且enter不重新加载页面的表单
我正在寻找最简洁的方法来创建一个没有提交按钮的HTML表单。这本身很简单,但我还需要阻止表单在完成类似提交的操作时重新加载自身(例如,在文本字段中点击Enter)。向表单添加onsubmit处理程序(通过纯js或jquery$().submit(fn)),并返回false,除非满足特定条件Javascript 没有操作且enter不重新加载页面的表单,javascript,html,forms,Javascript,Html,Forms,我正在寻找最简洁的方法来创建一个没有提交按钮的HTML表单。这本身很简单,但我还需要阻止表单在完成类似提交的操作时重新加载自身(例如,在文本字段中点击Enter)。向表单添加onsubmit处理程序(通过纯js或jquery$().submit(fn)),并返回false,除非满足特定条件 除非您不希望表单提交,否则,在这种情况下,为什么不在表单元素中省略“action”属性?只需将此事件添加到文本字段中即可。它将阻止按Enter键进行提交,您可以根据需要自由添加提交按钮或调用表单。提交():
除非您不希望表单提交,否则,在这种情况下,为什么不在表单元素中省略“action”属性?只需将此事件添加到文本字段中即可。它将阻止按Enter键进行提交,您可以根据需要自由添加提交按钮或调用表单。提交():
onKeyPress="if (event.which == 13) return false;"
例如:
<input id="txt" type="text" onKeyPress="if (event.which == 13) return false;"></input>
您希望在表单中包含
action=“javascript:void(0);”
,以防止页面重新加载并保持HTML标准。一个想法:
<form method="POST" action="javascript:void(0);" onSubmit="CheckPassword()">
<input id="pwset" type="text" size="20" name='pwuser'><br><br>
<button type="button" onclick="CheckPassword()">Next</button>
</form>
下一个
及
$(“#pwset”).focus();
函数CheckPassword()
{
inputxt=$(“#pwset”).val();
//现在是你的代码
$(“#div1”).load(“next.php#div2”);
返回false;
}
两种解决方法:
第一个响应是最佳解决方案:
将onsubmit处理程序添加到表单中(通过普通js或jquery) $().submit(fn)),并返回false,除非您的特定条件是 相遇 更具体地说,jquery:
$('#your-form-id').submit(function(){return false;});
$("#yourFormId").on("submit",function(event){event.preventDefault()})
除非你不想提交表单,否则永远——在这种情况下,为什么
不只是在表单元素上省略“action”属性
编写Chrome扩展就是这样一个例子:您可能有一个表单供用户输入,但您不希望它提交。如果使用action=“javascript:void(0);”,代码可能会正常工作,但最终会出现运行内联javascript的错误
如果您完全忽略了操作,表单将重新加载,这在某些情况下在编写Chrome扩展时也是不希望的。或者,如果你有一个带有某种嵌入式计算器的网页,用户会提供一些输入,然后单击“计算”或类似的东西。当你在表单中按enter键时,表单的自然行为是被提交,要停止这种不自然的行为,你必须阻止它提交(默认行为),使用jquery:
$('#your-form-id').submit(function(){return false;});
$("#yourFormId").on("submit",function(event){event.preventDefault()})
你希望它永远不提交吗?如果你只有一个文本字段,当你点击回车键时它不应该提交,是吗?我希望它在其他条件下提交(事实上点击某个按钮)。问题是,我无法让“在文本字段中输入时”的发布/访问相同url的行为不会发生。因此,我精心创建的表单,需要执行X、Y和Z操作才能提交,可能会被用户按enter键错误提交。谢谢。我担心你的答案的清晰向我表明了先前答案的正确性,因此你没有得到公认的答案,但你确实得到了我的感谢和投票!非常感谢。很乐意帮忙。我从来都不是一个引人注目的人根据标准,没有
action
属性的表单不是表单,并且在某些浏览器中会导致页面重新加载。。我发现action=“javascript:void(0);”
效果很好。Dutchie的答案很好。Firefox刚刚刷新了页面。@Dutchie432应该把它变成一个答案而不是评论。然后它会到达它所属的顶端。或者,KPrime可以调整他的答案,因为省略该操作对我不起作用……只花了2天时间试图在按下enter键时抑制submit按钮的默认操作,因为尽管该操作发生了,页面最终还是重新加载(Firefox)。在表单上添加javascript void作为操作修复了它。谢谢你的回答。这仍然有效-但这仍然是2016年的“最先进”解决方案吗?@low_rents我仍然一直在使用它,而且我个人还没有找到更好的解决方案。感谢您提供了一个精确而伟大的解决方案来解决在按enter键时重新加载页面的问题:)最佳解决方案。感谢您真正回答了这个问题,不告诉开发人员他们应该做什么。听按键事件(例如回车键)会给您带来textarea
s的麻烦,可能会选择自动完成或下拉菜单,而手机可能是另一个麻烦源。