私はそのような問題を抱えています-Twitter bootstrapモーダル(それが表示された後)内のいくつかの要素をオートフォーカスする必要があります。 .loadメソッド)別のHTMLファイルから
$(document).on('shown', ".modal", function() {
$('[autofocus]', this).focus();
});
モーダルが以前にロードされた場合にのみ機能します。
問題は、最初にモーダルがロードされたときにオートフォーカスを動作させる方法ですか?
私はBootstrap= 3.0を使用しています(うまくいけば、これは3.1でも動作します)。
ESCキーでモーダルを閉じることができるため、tabindex="-1"
を使用する必要がありました。
だから私はこの問題を次の方法で修正できました。
// Every time a modal is shown, if it has an autofocus element, focus on it.
$('.modal').on('shown.bs.modal', function() {
$(this).find('[autofocus]').focus();
});
tabindex = "-1"を削除してみてください。正常に動作します。
<div class="modal fade" id="modalID" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal fade" id="modalID" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
お役に立てれば!
アプリで@ncのソリューションを使用できませんでした。後で追加されたモーダルは表示されませんでした。これは私のために働いた
$(document).on('shown.bs.modal', '.modal', function() {
$(this).find('[autofocus]').focus();
});
フランク・ファンが指摘するように、autofocus
HTML属性に依存しないBootstrap)の新しいバージョンを使用している場合は、これを使用する必要があります。
$('#myModal').on('shown.bs.modal', function () {
// get the locator for an input in your modal. Here I'm focusing on
// the element with the id of myInput
$('#myInput').focus()
})
以下は抜粋です: http://getbootstrap.com/javascript/#modals
HTML5のセマンティクスの定義方法により、
autofocus
HTML属性はBootstrap=モーダルでは効果がありません。同じ効果を得るには、カスタムJavaScriptを使用します。$('#myModal').on('shown.bs.modal', function () { $('#myInput').focus() })
bootstrapモーダルが表示されている場合、フォーカスを設定したいautofocus
属性を持つ入力があります。
JavaScriptのロード時にモーダルマークアップを使用できますか?
.modal
イベントのすべてのshown.bs.modal
要素にイベントハンドラーを登録します
$('.modal').on('shown.bs.modal', function() {
$(this).find('[autofocus]').focus();
});
モーダルマークアップは動的に生成されますか?
shown.bs.modal
イベントのドキュメント全体にイベントハンドラーを登録します。
$(document).on('shown.bs.modal', '.modal', function () {
$(this).find('[autofocus]').focus();
});