Enterキーを押したときにモーダルで閉じるのを避ける


107

フォーム付きのブートストラップモーダルを設定しました。Enterキーを押すと、モーダルが閉じられることに気づきました。Enterキーを押したときにそれを閉じない方法はありますか?

keyboard:falseでモーダルをアクティブ化しようとしましたが、それはEscキーでの終了を防ぐだけです。


この質問が好きです。なぜプラグインのソースコードを編集しないのですか?
ライアン

調べてみますが、何か役に立つものが見つかったら編集します。その間、誰かが答えを知っていることを願っています。
ルークモーガン

click.dismiss.modalからkeyupに変更しました。問題はないようです。後でもう一度確認して、他の問題が発生していないかどうかを確認します
Luke Morgan

うん、ボタンがめちゃくちゃになりました(問題を回避するためにonclick = "$( '#signinModal')。modal( 'hide');"を追加しましたが、今はすべて問題ないようです)
Luke Morgan

回答:


121

私もこの問題を抱えていました。
私の問題は、モーダルに閉じるボタンがあったことです

<button class="close" data-dismiss="modal">&times;</button>

入力フィールドでEnterキーを押すと、このボタンが発生しました。代わりにアンカーに変更しましたが、期待どおりに機能します(Enterはフォームを送信し、モーダルを閉じません)。

<a class="close" data-dismiss="modal">&times;</a>

ソースを確認しないと、原因が同じであることを確認できません。


いいえ、ボタンは使用していません。<a>アイテムを使用しましたが、それは別のものだと思います。コードIの使用は、単に内部の追加フォームで、基本的にブートストラップ・ページ上のサンプルコードである
ルーク・モーガン

右上のボタンが見えませんでした。今、それはうまくいきます、ありがとう!
ルークモーガン

+1、すばらしい発見!誰かがこれをブートストラップ問題トラッカーに入れているのだろうか?現時点ではチェックするのが面倒です。多分昼食後。
Andrew

8
これは単なるボタンの問題ではありません。モーダル(右上の "x"を含む)からすべてのボタンを削除しましたが、単一のフォームテキストフィールドがある場合、Enterキーを押すとダイアログが閉じます。奇妙なことに、単一のテキストフィールドがある場合にのみ問題になります。2つあると、どのフィールドにフォーカスがあるかに関係なく、Enterはモデルを閉じません。
jpeskin 2013年

11
キャンセルボタンでtype = "button"を使用できます
Muayyad Alsadi


19

ブートストラップモーダルからすべてのボタンを削除した後でもこの問題が発生したため、ここでの解決策はどれも役に立ちませんでした。

キーボードフォーカスがテキストフィールド上にあるときにEnterキーを押すと、単一のテキストフィールドを含むフォームが原因で、ブラウザがフォームを送信し、結果として閉じることがわかりました。これは、Bootstrapの何よりも、ブラウザ/フォームの問題のようです。

私の解決策は、フォームのonsubmit属性をonsubmit = "return false"に設定することでした

実際に送信イベントを使用している場合、これは問題になる可能性がありますが、私はブラウザ送信ではなく、AJAXリクエストを生成するJSフレームワークを使用しているため、送信を完全に無効にすることをお勧めします。(また、送信をトリガーする可能性のあるすべてのフォーム要素を手動で微調整する必要がないことも意味します)。

詳細情報:単一のテキスト入力フィールドを持つブートストラップモーダルダイアログは常にEnterキーで閉じます


2
私はすでにtype="button"すべての閉じる/キャンセルボタンを使用していましたが、Enterキーを押してモーダルを閉じると、まだこの問題がありました。モーダルに入力テキストフィールドが1つしかなかったので、ソリューションで修正しました。ご回答有難うございます!
Darren Parker

7

キャンセルボタンの前にログインボタンを配置すると、問題が解決します。

<div class="modal-footer">
    <button type="submit" class="btn primary">Login</button>
    <button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>

6
キャンセルは「submit」と入力しないでください
Manatax 2015

5

同じ問題があり、私はそれを解決しました

<form onsubmit="return false;">

しかし、もう1つの解決策があります。ダミーの非表示の入力を追加できるため、フォームは次のようになります。

<form role="form" method="post" action="submitform.php">
    <input type="text" id="name" name="name" >
    <input type="text" style="display: none;">
</form>

3

ちょうど同じような経験をしたばかりで、解決方法はタグを使用するのではなく、type = "button"のタグに変更しました。これで、「Enter」キーを押してブートストラップモーダルを閉じるという問題が解決したようです。


2

私もこの問題を抱えていて、この方法で解決しました。onsubmitをフォームに追加しました。Enterキーを保存キーとして使用できるようにしたかったので、onsubmitにsave_stuff()JavaScriptを追加しました。falseを返します。フォームの送信を防ぐために使用されます。

<form onsubmit="save_stuff(); return false;">
 ...
</form>

<script>
    function save_stuff(){
      //Saving stuff
    }
</script>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.