我需要一个解决“默认按钮”不受欢迎的古老问题的解决方案。即,您在文本框中按Enter,但表单上有一个不是您想要触发的提交按钮(或者您可能根本不希望表单触发)。
我想知道以下“解决方案”。有点hacky,但据我所知应该是可靠的。
在表单中,第一件事是一个不可见的按钮。然后一些 jquery 立即禁用它。如果您在表单上按 Enter 键,则此按钮将被视为“默认按钮”并被触发,但由于“返回 false”事件处理程序,它什么也不做。
我之前见过的解决方案依赖于诸如 keydown 事件处理程序之类的东西,或者其他看似复杂/难以在每个浏览器中测试的东西。
我的解决方案(我以前从未见过,但可能不是唯一的)似乎更简单,而且我认为非常可靠。您甚至可以判断 javascript 是否被禁用并且有人按 Enter 键,因为服务器将在表单数据中收到此按钮。
<form action="/store/checkout" method="post">
<input id="btnFakeSubmit" name="FakeSubmit" src="/images/pixel.gif"
style="width:1px; height:1px; position:absolute;" type="image" />
<script>
$('#btnFakeSubmit').click(function() {
return false;
});
</script>
有关此解决方案的任何建议 - 包括在所有浏览器中隐藏按钮的最佳方法。