1

スパンがクリックされたときに、スパン内の最初のフォーム要素に焦点を合わせる方法がわかりません。私は自分のコードを含めました。また、「最も近い」をいじりましたが、運がありませんでした。

<form>
<span>
  <input id="content" type="text">
  <label for="content">Content</label>
</span>
</form>

$('span').click(function() {
    $(this).find('input').focus()
});

どんな助けでも大歓迎です。

4

3 に答える 3

5

実際の質問に答える前に:JavaScriptさえ必要としない、あなたがやろうとしていることを達成する方法があります。

入力フィールドをラベルタグでラップすると、ラベルをクリックすると自動的にフィールドにフォーカスが移ります。

<form>
    <label>
        Content
        <input id="content" name="content" type="text">
    </label>
</form>

JavaScript / jQueryを介してそれを行うことを主張する場合は、DOMの準備ができた後にのみクリックハンドラーをアタッチするようにする必要があります。

$(document).ready(function () { // Or equivalent: $(function() { ... });
    $('span').click(function () {
        $(this).find('input:first').focus(); // :first makes sure only the first input found is selected
    });
});
于 2013-03-22T23:45:06.577 に答える
3

ラベルを使用してこの機能をトリガーしないのはなぜですか。これはをspanカバーするだけなので、正しく理解していれば、ユーザーがクリックした場合でもフォーカスを設定する必要があります。これは次のように実現できます。labelinputinputlable

<form>
    <span>
       <input name="content" id="content" type="text">
       <label for="content">Content</label>
    </span>
</form>

しかし、何か他のことをしようとしている場合は、次のようにします。

$(document).ready(function(){
   $('span').click(function() {
     $(this).find('input:first').focus();
   });
});
于 2013-03-22T23:44:21.957 に答える
0

DOMがロードされた後にjsが呼び出されることを確認してください

<script type="text/javascript">
  $(function(){
    $('span').click(function() {
      $(this).find('input').focus()
    });
  });
</script>
于 2013-03-22T23:40:07.567 に答える