嗯,我试图通过按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>

这很有效。当用户按下回车键时,提交按钮就会正常工作,但在Firefox、IE、Safari、Opera和Chrome浏览器中不会显示该按钮。然而,我仍然不喜欢这个解决方案,因为很难知道它是否适用于所有平台和所有浏览器。

谁能提出一个更好的方法?还是说这已经是最好的结果了?


当前回答

input.on('keypress', function(event) {
    if ( event.which === 13 ) {
        form.submit();
        return false;
    }
});

其他回答

而不是hack你目前使用隐藏按钮,这将是更简单的设置可见性:折叠;在样式属性中。但是,我仍然建议使用一些简单的Javascript来提交表单。据我所知,现在对这些事情的支持无处不在。

我把它添加到document ready的函数中。如果表单上没有提交按钮(我所有的Jquery对话框表单都没有提交按钮),追加它。

$(document).ready(function (){
    addHiddenSubmitButtonsSoICanHitEnter();
});
function addHiddenSubmitButtonsSoICanHitEnter(){
    var hiddenSubmit = "<input type='submit' style='position: absolute; left: -9999px; width: 1px; height: 1px;' tabindex='-1'/>";
    $("form").each(function(i,el){
        if($(this).find(":submit").length==0)
            $(this).append(hiddenSubmit);
    });
}

你试过这个吗?

<input type="submit" style="visibility: hidden;" />

因为大多数浏览器都理解visibility:hidden,它并不像display:none那样工作,所以我猜它应该没问题。我还没有亲自测试过,所以CMIIW。

最优雅的方法是保留提交按钮,但将其边框、填充和字体大小设置为0。

这将使按钮尺寸为0x0。

<input type="submit" style="border:0; padding:0; font-size:0">

您可以自己尝试,通过设置元素的轮廓,您将看到一个点,这是“包围”0x0 px元素的外部边界。

不需要可见性:隐藏,但如果它让你在晚上睡觉,你也可以把它放在一起。

JS小提琴

对于将来看到这个答案的人来说,HTML5为表单元素实现了一个新属性hidden,它将自动将display:none应用到你的元素上。

e.g.

<input type="submit" hidden />