Halchamdao
@Halchamdao

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JS、Jqueryにてクリック(フォーカス)された要素の取得・出力

解決したいこと

JS、Jqueryにてフォーカスされた要素の取得・出力を知りたい

Laravel、HTML、JS、JQueryを使用して、ラーニングアプリを作成しています。
その中で回答欄と選択肢があり、
クリックで選択(フォーカス)した回答欄(inputタグ)に対し、選択肢(selectタグ)として予め用意されている文字の中からクリックしたもの(複数選択)をそこへ出力する仕様を実装したいです。

現状

HTML

<div class="test">

  <select name='string' size= "5" multiple>
    <option value='あ'></option>
    <option value='い'></option>
    <option value='う'></option>
    <option value='え'></option>
    <option value='お'></option>
  </select>

//以下でフォーカスしたinputに対して上のoptionで選んだ文字を出力したい

  <input type="text" id="a">

  <input type="text" id="b">

  <input type="text" id="c">

</div>

JS

$('[name=string]').change(function() {

  var txt = $('[name=string] option:selected').text();
  $("#b").val(txt);

});

↑このようにすれば、idを指定したinputに対して出力することはできました。

↓試したコード

$('[name=string]').change(function() {

  var txt = $('[name=string] option:selected').text();
  $(document.activeElement).val(txt);

});

フォーカスされた要素を取得するdocument.activeElementというものを調べて試しましたが取得できていないのか、もしくはselectタグのoptionを選んだ時点でそもそもinputのフォーカスが外れてしまうのか動きません。

どなたかご教授いただけると幸いです。

0

1Answer

「フォーカスしたinputに対して」ということなので、それぞれのfocusイベントで処理をすればと思ったのですが、やりたい事と合ってますかね?

  1. selectから1つ選択
  2. inputをフォーカス
  3. フォーカスしたinputにselectで選択したテキストが入る
$('#a, #b, #c').focus(function() {
  const txt = $('[name=string] option:selected').text();
  $(this).val(txt);
});
1Like

Comments

  1. @Halchamdao

    Questioner

    ご回答ありがとうございます!
    ご教授頂いた1と2を逆にすることは可能でしょうか...?

    1.inputをフォーカス
    2.selectから1つ選択
    3.フォーカスしたinputにselectで選択したテキストが入る
  2. > 1と2を逆にする

    selectを選択した時点でフォーカスは移ってしまいますから、「1.inputをフォーカス」の時点で変数に残しておけば良いと思います。
  3. @Halchamdao

    Questioner

    アドバイス通り変数を一旦残すことで実装することができました!
    ありがとうございました!!

Your answer might help someone💌