iframeを備えたJQueryシックボックス。入力フィールドにフォーカスを設定します
-
06-07-2019 - |
質問
こんにちは、アプリケーションに jquery thickbox modal popu pがありました。 ( iframe )
すべてうまくいきますが、フォーカスを特定の入力フィールド dに設定したいです。
Iframeは通常のaspxページを読み込むため、$(document).ready(.. focus);
そのスクリプトをIFrameコードに入れます
ただし、これは機能しません。 「準備完了」の後、シックボックスによって他のコードが実行されるため、再びフォーカスが失われます。 (例えば..メカニズムが機能するように入力フィールドの値を設定できます。
フォーカスを設定するのを手伝ってくれる人はいますか?以下は私の呼び出しコードです。
<a href="page.aspx?placeValuesBeforeTB_=savedValues&TB_iframe=true&height=550&width=700" title="Add" class="thickbox">Add</a>
解決
ThickBoxは、iframe要素のonloadイベントでメソッドを呼び出すことにより、iframeのコンテナを表示します。 iframeは、iframeのコンテンツが読み込まれるまで親ページに表示されないため、$(document).ready(.. focus);を使用してフォーカスを設定することはできません。これを回避するために見つけた最も簡単な方法は、setTimeoutを使用して、iframeが表示されるまでフォーカスを設定する関数呼び出しを遅らせることです。
jQuery(document).ready(function() {
setTimeout(function(){
$('#YourElementID').focus();
},200);
});
注:setTimeoutに渡すミリ秒値を調整する必要がある場合があります。
他のヒント
docs.jquery.comから:
一致した各要素のフォーカスイベントをトリガーします。
これにより、フォーカスイベントにバインドされているすべての関数が実行されます。 これは、基になる要素のfocusメソッドを実行しないことに注意してください。
つまり、コードは次のようになります。 $( '#input_field')。get(0).focus()
違いは、私の例ではDOM要素自身のフォーカス要素を使用しているのに対して、あなたのものではjQueryを使用していることです。
それでも動作しませんが、おそらく正しい方向への一歩です。
乾杯、