質問

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"/>

これは、画面の外にあるボタンを左に押します。これの良い点は、CSSが無効になっている場合に優雅に劣化することです。

更新-IE7の回避策

ブライアン・ダウニング+の提案による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。

送信ボタンのない別のソリューション:

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

});

今後この回答を見る人のために、HTML5はフォーム要素の新しい属性hiddenを実装します。これは要素にdisplay:noneを自動的に適用します。

e.g。

<input type="submit" hidden />

次のコードを使用すると、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"/>

名前と値の適切な値を使用して、コードの最初の行として上記の行を追加します。

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

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>

これを行う最もエレガントな方法は、submit-buttonを保持することですが、ボーダー、パディング、およびfont-sizeを0に設定します。

これにより、ボタンの寸法が0x0になります。

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

これを自分で試すことができます。要素にアウトラインを設定すると、ドットが表示されます。これは、外側の境界線です<!> quot; surrounding <!> quot; 0x0 px要素。

可視性は必要ありません:非表示ですが、夜間に眠る場合は、ミックスでそれをスローできます。

JSフィドル

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

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

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

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

最も簡単な方法

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

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

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

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

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

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

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

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

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

HTML5ソリューション

<input type="submit" hidden />

ドキュメントの機能に追加しました。フォームに送信ボタンがない場合(すべての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 class="hidden" type="submit" value="" 
onclick="document.getElementById('loginform').submit()"; />

and

 .hidden {
        border:0;
        padding:0;
        font-size:0;
        width: 0px;
        height: 0px;
    }
.cssファイル内の

。 私にとっても魔法のように機能しました。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top