在没有提交按钮的情况下按Enter键提交表单

时间:2009-01-25 13:34:17

标签: html forms submit

我正在尝试通过按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中。但是,我仍然不喜欢这个解决方案,因为很难知道它是否适用于所有浏览器的所有平台。

有人能建议更好的方法吗?或者这是否与它一样好?

21 个答案:

答案 0 :(得分:225)

尝试:

<input type="submit" style="position: absolute; left: -9999px"/>

这会将按钮向左推,离开屏幕。这样做的好处是,当CSS被禁用时,你会得到优雅的降级。

更新 - IE7的解决方法

正如Bryan Downing + tabindex建议阻止标签到达此按钮(由Ates Goral提供):

<input type="submit" 
       style="position: absolute; left: -9999px; width: 1px; height: 1px;"
       tabindex="-1" />

答案 1 :(得分:93)

我认为你应该去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>

答案 2 :(得分:75)

你试过这个吗?

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

由于大多数浏览器都理解visibility:hidden并且它不像display:none那样真正起作用,所以我猜它应该没问题。我自己没有真正测试过,所以CMIIW。

答案 3 :(得分:27)

没有提交按钮的另一种解决方案:

HTML

<form>
  <input class="submit_on_enter" type="text" name="q" placeholder="Search...">
</form>

的jQuery

$(document).ready(function() {

  $('.submit_on_enter').keydown(function(event) {
    // enter has keyCode = 13, change it if you want to use another button
    if (event.keyCode == 13) {
      this.form.submit();
      return false;
    }
  });

});

答案 4 :(得分:14)

对于将来查看此答案的任何人,HTML5会为表单元素hidden实现一个新属性,该属性会自动将display:none应用于您的元素。

e.g。

<input type="submit" hidden />

答案 5 :(得分:13)

使用以下代码,这解决了我在所有3种浏览器(FF,IE和Chrome)中的问题:

<input  type="submit" name="update" value=" Apply " 
    style="position: absolute; height: 0px; width: 0px; border: none; padding: 0px;"
    hidefocus="true" tabindex="-1"/>

在代码的第一行添加上面的行,并使用适当的name和value值。

答案 6 :(得分:7)

除了您当前用来隐藏按钮的黑客外,在style属性中设置visibility: collapse;要简单得多。但是,我仍然建议使用一些简单的Javascript来提交表单。据我所知,现在对这类事物的支持无处不在。

答案 7 :(得分:7)

只需将hidden属性设置为true:

<form name="loginBox" target="#here" method="post">
    <input name="username" type="text" /><br />
    <input name="password" type="password" />
    <input type="submit" hidden="true" />
</form>

答案 8 :(得分:6)

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

这将使按钮尺寸为0x0。

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

您可以自己尝试一下,通过设置元素的轮廓,您将看到一个圆点,这是外边框&#34;周围&#34; 0x0 px元素。

不需要能见度:隐藏,但如果它让你在晚上睡觉,你也可以把它扔进混合物中。

JS Fiddle

答案 9 :(得分:5)

如果提交按钮不可见,IE不允许按ENTER键进行表单提交,并且表单有多个字段。通过提供1x1像素透明图像作为提交按钮,给它想要的东西。当然它会占用布局的一个像素,但看看你要做些什么来隐藏它。

<input type="image" src="img/1x1trans.gif"/>

答案 10 :(得分:4)

这是我的解决方案,在Chrome,Firefox 6和IE7 +中进行了测试:

.hidden{
    height: 1px;
    width: 1px;
    position: absolute;
    z-index: -100;
}

答案 11 :(得分:3)

最简单的方式

<input type="submit" style="width:0px; height:0px; opacity:0;"/>

答案 12 :(得分:2)

您也可以尝试这个

<INPUT TYPE="image" SRC="0piximage.gif" HEIGHT="0" WIDTH="0" BORDER="0">

您可以包含宽度/高度= 0 px

的图像

答案 13 :(得分:2)

<input type="submit" style="display:none;"/>

这很好用,它是你想要实现的最明确的版本。

请注意,其他表单元素的display:nonevisibility:hidden之间存在差异。

答案 14 :(得分:2)

对于那些在IE和其他人身上都有问题的人。

{
    float: left;
    width: 1px;
    height: 1px;
    background-color: transparent;
    border: none;
}

答案 15 :(得分:0)

我将它添加到文档就绪的函数中。如果表单上没有提交按钮(我的所有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);
    });
}

答案 16 :(得分:0)

HTML5解决方案

<input type="submit" hidden />

答案 17 :(得分:0)

我使用了大量的UI框架。他们中的许多人都有内置的类,您可以使用这些类在视觉上隐藏事物。

引导程序

<input type="submit" class="sr-only" tabindex="-1">

角材料

<input type="submit" class="cdk-visually-hidden" tabindex="-1">

创建这些框架的出色人才将这些样式定义如下:

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.cdk-visually-hidden {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
    outline: 0;
    -webkit-appearance: none;
    -moz-appearance: none;
}

答案 18 :(得分:0)

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

答案 19 :(得分:0)

这是对我有用的代码,它肯定会对您有所帮助

<form name="loginBox" target="#here" method="post">
  <input name="username" type="text" /><br />
  <input name="password" type="password" />
  <input type="submit" />
</form>

<script type="text/javascript">
  $(function () {
    $("form").each(function () {
      $(this)
        .find("input")
        .keypress(function (e) {
          if (e.which == 10 || e.which == 13) {
            this.form.submit();
          }
        });
      $(this).find("input[type=submit]").hide();
    });
  });
</script>

答案 20 :(得分:-1)

我已经

< input class="hidden" type="submit" value="" 
onclick="document.getElementById('loginform').submit()"; />

 .hidden {
        border:0;
        padding:0;
        font-size:0;
        width: 0px;
        height: 0px;
    }
<。>在.css文件中。 它也为我神奇地工作。 :)