私は例から次のモーダルフォームを持っています:
<!-- Button to trigger modal -->
<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
Enter something: <input type="text" id="myInput">
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
モーダルが表示された後、入力フィールドをフォーカスしたい。
イベントにオートフォーカスとフィールドフォーカスの設定の両方を試しまし$('modal').shown()
た。それはちょっとフィールドに焦点を当てています(フィールドがフォーカスされているときにラベルを表示する別のイベントがあります)が、実際にはフィールドはフォーカスされておらずTAB
、もう一度フォーカスするために押す必要があります。私も次のようなことを試しました:
$(".modal").on('shown', function() {
$(this).find("[autofocus]:first").focus();
});
autofocus:"autofocus"
私のフィールドの属性を設定します。それは同じ効果をもたらしました。
モーダルが通常のdivである場合、私が試したすべてが機能し、ページの読み込みに焦点が当てられます。しかし、モーダルがボタンによってトリガーされた場合、何も機能しません(もちろん、ロジックも変更します。モーダルが通常のdivである場合は、オンロードに集中できます。ボタンでトリガーする場合は、それを考慮してそれに応じて解決しようとします)。
私が望むのは、モーダルが読み込まれた後にフィールドにフォーカスするだけで、カーソルが点滅し、ユーザーが入力を開始できるようになります。
うまくいったのは、bootstrap.js 自体を変更することだけです$("#myInput").focus()
。bootstrap.js モーダル セクションのどこかに入れましたが、どこにあったか忘れてしまいました。次に、bootstrap.js API を変更するのは良くないと思います。よりエレガントなソリューション。アドバイスをください、ありがとう xD
更新:
まず第一に、あなたの助けに感謝します! あなたのおかげで、私が抱えていた問題がRailsの問題であることがわかりました。
これが私がしたことです:
1)。rails generate controller home index
2)。app/views/home/index.htmlとapp/assets/javascript/something.jsは、robertklep が提供するこの jsFiddle のようなものです: http://jsfiddle.net/JCaFp/
4)。jquery-1.9.1.jsとbootstrap.jsはapp/assets/javascript/にあります (どちらもウェブサイトから取得したばかりで、何も変更されていません)
5)。app/views/layouts/application.html.erb - このファイルがソリューションの鍵だと思います:
<!DOCTYPE html>
<html>
<head>
<title>Udc</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
それでもうまくいきません。すべてのjsファイルが含まれますが、ブラウザでモーダルを開くと、入力が一瞬フォーカスされ、再びフォーカスが外れます。
私もこれを試しました:
<%= javascript_include_tag "jquery" %>
<%= javascript_include_tag "bootstrap" %>
<%= javascript_include_tag "somehow" %>
まだ同じもの。
提案?:)
アップデート:
解決しました!
somehow.js
私のを変更した後
$(document).ready(function() {
$(".modal").on('shown', function() {
$(this).find("[autofocus]:first").focus();
});
});
およびapplication.html.erb
スタイルシートを次のようにします。
<%= javascript_include_tag "jquery" %>
<%= javascript_include_tag "bootstrap" %>
<%= javascript_include_tag "somehow" %>
期待どおりに動作します。再度、感謝します!