355

Enterキーを押してフォームを送信しようとしていますが、送信ボタンは表示されません。すべてのブラウザーですべてが機能するようにしたいので (私が知っている唯一の JS の方法はイベントを使用することです)、可能であれば JavaScript を使用したくありません。

現在、フォームは次のようになっています。

<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 では表示されません。ただし、すべてのブラウザを備えたすべてのプラットフォームで動作するかどうかを判断するのは難しいため、このソリューションはまだ好きではありません。

誰でもより良い方法を提案できますか? それとも、これはそれが得られるのと同じくらい良いですか?

4

20 に答える 20

258

2022 年更新: 代わりにこれを使用してください

<input type="submit" hidden />

注意 - 古い回答
2021 年以降は使用しないでくださいposition: absolutehidden代わりに属性を使用することをお勧めします。それ以外の場合は、下を見て、より適切で最新の回答を選択してください。

試す:

<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" />
于 2009-01-25T13:45:34.183 に答える
104

私はあなたが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>
于 2009-01-25T20:45:02.200 に答える
84

これを試しましたか?

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

ほとんどのブラウザは理解visibility:hiddenしており、実際には のように動作しないためdisplay:none、問題ないはずだと推測しています。自分で実際にテストしていないので、CMIIW.

于 2009-01-25T20:34:24.297 に答える
37

送信ボタンのない別の解決策:

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;
    }
  });

});
于 2013-11-02T17:16:56.773 に答える
14

次のコードを使用すると、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 の適切な値を使用して、上記の行をコードの最初の行として追加します。

于 2011-11-14T09:54:59.870 に答える
10

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>
于 2013-04-03T15:34:50.683 に答える
8

これを行う最もエレガントな方法は、送信ボタンをそのままにして、ボーダー、パディング、およびフォントサイズを 0 に設定することです。

これにより、ボタンのサイズが 0x0 になります。

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

これを自分で試すことができます。要素にアウトラインを設定すると、0x0 px 要素を「囲む」外側の境界線であるドットが表示されます。

可視性は必要ありません: 非表示ですが、夜に眠くなる場合は、それもミックスに入れることができます.

JSフィドル

于 2016-06-20T15:01:13.267 に答える
8

ボタンを非表示にするために現在使用しているハックの代わりにvisibility: collapse;、スタイル属性で設定する方がはるかに簡単です。ただし、単純な Javascript を使用してフォームを送信することをお勧めします。私が理解している限りでは、そのようなことに対するサポートは、今日どこにでもあります。

于 2009-01-25T13:43:05.530 に答える
6

送信ボタンが表示されておらず、フォームに複数のフィールドがある場合、IE はフォーム送信のために ENTER キーを押すことを許可しません。送信ボタンとして 1x1 ピクセルの透明な画像を提供することで、必要なものを提供します。もちろん、それはレイアウトの 1 ピクセルを占めますが、それを非表示にするために何をしなければならないかを見てください。

<input type="image" src="img/1x1trans.gif"/>
于 2014-06-12T23:55:02.973 に答える
6
<input type="submit" style="display:none;"/>

これは正常に機能し、達成しようとしているものの最も明確なバージョンです。

他のフォーム要素のdisplay:noneとの間には違いがあることに注意してください。visibility:hidden

于 2017-03-30T00:12:57.487 に答える
5

これは、Chrome、Firefox 6、および IE7+ でテストされた私のソリューションです。

.hidden{
    height: 1px;
    width: 1px;
    position: absolute;
    z-index: -100;
}
于 2011-10-01T22:00:44.547 に答える
5

最も簡単な方法

<input type="submit" style="width:0px; height:0px; opacity:0;"/>
于 2013-09-22T17:47:30.767 に答える
3

IE に問題がある人や他の人にも。

{
    float: left;
    width: 1px;
    height: 1px;
    background-color: transparent;
    border: none;
}
于 2010-11-10T20:46:09.630 に答える
3

これも試すことができます

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

幅/高さ = 0 px の画像を含めることができます

于 2009-01-25T13:45:10.753 に答える
2

ドキュメント準備完了時の関数に追加しました。フォームに送信ボタンがない場合 (すべての 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);
    });
}
于 2013-03-27T14:58:56.767 に答える