通过按Enter键提交表单而无需提交按钮
那么我试图通过按回车来提交表单,但不显示提交按钮。 如果可能的话,我不想进入JavaScript,因为我希望所有的浏览器都能正常工作(我知道的唯一的JS方式是事件)。
现在,表单看起来像这样:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
这工作得很好。 提交按钮在用户按下Enter键时起作用,并且该按钮不会在Firefox,IE,Safari,Opera和Chrome中显示。 但是,我仍然不喜欢该解决方案,因为很难知道它是否可以在所有浏览器的所有平台上运行。
任何人都可以提出更好的方法? 或者这是否和它一样好?
尝试:
<input type="submit" style="position: absolute; left: -9999px"/>
这会将按钮waaay推到屏幕左侧。 这样做的好处在于,禁用CSS时,您会得到优雅的降级。
更新 - IE7的解决方法
正如Bryan Downing + tabindex
所建议的,以防止标签到达此按钮(Ates Goral):
<input type="submit"
style="position: absolute; left: -9999px; width: 1px; height: 1px;"
tabindex="-1" />
我认为你应该去Javascript路线,或者至少我会:
<script type="text/javascript">
// Using jQuery.
$(function() {
$('form').each(function() {
$(this).find('input').keypress(function(e) {
// Enter pressed?
if(e.which == 10 || e.which == 13) {
this.form.submit();
}
});
$(this).find('input[type=submit]').hide();
});
});
</script>
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" />
</form>
你试过这个吗?
<input type="submit" style="visibility: hidden;" />
由于大多数浏览器都了解visibility:hidden
,它并不像display:none
那样工作,但我猜测它应该没问题。 还没有真正测试过它自己,所以CMIIW。
上一篇: Submitting a form by pressing enter without a submit button
下一篇: Constrain method type argument to be base of class generic type