フォーム付きのブートストラップモーダルを設定しました。Enterキーを押すと、モーダルが閉じられることに気づきました。Enterキーを押したときにそれを閉じない方法はありますか?
keyboard:falseでモーダルをアクティブ化しようとしましたが、それはEscキーでの終了を防ぐだけです。
フォーム付きのブートストラップモーダルを設定しました。Enterキーを押すと、モーダルが閉じられることに気づきました。Enterキーを押したときにそれを閉じない方法はありますか?
keyboard:falseでモーダルをアクティブ化しようとしましたが、それはEscキーでの終了を防ぐだけです。
回答:
私もこの問題を抱えていました。
私の問題は、モーダルに閉じるボタンがあったことです
<button class="close" data-dismiss="modal">×</button>
入力フィールドでEnterキーを押すと、このボタンが発生しました。代わりにアンカーに変更しましたが、期待どおりに機能します(Enterはフォームを送信し、モーダルを閉じません)。
<a class="close" data-dismiss="modal">×</a>
ソースを確認しないと、原因が同じであることを確認できません。
type = "button"属性をbutton要素に追加するだけで、一部のブラウザはタイプをデフォルトで送信と解釈します。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Attributes
これは、モーダルにあるすべてのボタンに適用されます。
<button type="button" class="close" data-dismiss="modal">×</button>
ブートストラップモーダルからすべてのボタンを削除した後でもこの問題が発生したため、ここでの解決策はどれも役に立ちませんでした。
キーボードフォーカスがテキストフィールド上にあるときにEnterキーを押すと、単一のテキストフィールドを含むフォームが原因で、ブラウザがフォームを送信し、結果として閉じることがわかりました。これは、Bootstrapの何よりも、ブラウザ/フォームの問題のようです。
私の解決策は、フォームのonsubmit属性をonsubmit = "return false"に設定することでした
実際に送信イベントを使用している場合、これは問題になる可能性がありますが、私はブラウザ送信ではなく、AJAXリクエストを生成するJSフレームワークを使用しているため、送信を完全に無効にすることをお勧めします。(また、送信をトリガーする可能性のあるすべてのフォーム要素を手動で微調整する必要がないことも意味します)。
type="button"
すべての閉じる/キャンセルボタンを使用していましたが、Enterキーを押してモーダルを閉じると、まだこの問題がありました。モーダルに入力テキストフィールドが1つしかなかったので、ソリューションで修正しました。ご回答有難うございます!
キャンセルボタンの前にログインボタンを配置すると、問題が解決します。
<div class="modal-footer">
<button type="submit" class="btn primary">Login</button>
<button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>
同じ問題があり、私はそれを解決しました
<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>