1
0

More than 1 year has passed since last update.

動的に表示したDOMに対してjQueryでfocus()する方法

Posted at

jQueryの.focus()を使ってinputタグに自動的にマウスカーソルのフォーカスを当てようとしていたのだけれど、うまくいかない。
しかしこの方法で別のDOMに対してはfocusできていたので、jQueryのバージョンだとかそういう要因ではなさそうだった。

よく考えると今回フォーカスを当てたいDOMは普段は隠れていて、ボタンを押した時だけ出てくるミニモーダルの中のinputタグだった。このボタンを手動で押してミニモーダルを開いた場合には自動的にフォーカスが当たるのだけれど、それ以外の方法(今回は onclick → trigger("click")による自動?クリックでミニモーダルを出現させていた)では動作していないようだ。

解決した方法:

ミニモーダルをdisplay:blockなりで出現させてから.focusするまでにsetTimeoutで100ミリ秒待つようにしたら普通に動いた。

ちなみに:

.focus()だけじゃなく.select()もこの方法で動いた。 せっかくなので.focusを.trigger("focus")に変えておいたが、これは何の意味があるのだろうか。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0