通过按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。

链接地址: http://www.djcxy.com/p/49133.html

上一篇: Submitting a form by pressing enter without a submit button

下一篇: Constrain method type argument to be base of class generic type