web-dev-qa-db-ja.com

jQuery Textareaフォーカス

ボタンをクリックすると、このtextarea要素のliにフォーカスを合わせたいです。

<li class="commentBlock" id="commentbox-79" style="display: list-item;">
  <div>
    <div class="grid userImageBlockS">
      <div class="imgSmall">
        <img width="35" height="35" alt="image" src="/bakasura1/files/images/small/1288170363aca595cabb50.jpg">
      </div>
    </div>
    <div class="grid userContentBlockS alpha omega"> 
      <form accept-charset="utf-8" action="/bakasura1/account/saveComment" method="post">
        <div style="display: none;">
          <input type="hidden" value="POST" name="_method">
        </div> 
        <input type="hidden" id="StatusMessageReplyPid" value="79" name="data[StatusMessageReply][pid]"> 
        <input type="hidden" id="StatusMessageReplyItemId" value="1" name="data[StatusMessageReply][item_id]"> 
        <input type="hidden" id="StatusMessageReplyCommentersItemId" value="1" name="data[StatusMessageReply][commenters_item_id]"> 
        <textarea id="StatusMessageReplyMessage" name="data[StatusMessageReply][message]">
          Write your comment...
        </textarea>
        <input type="submit" name="" value="Comment" class="comment" id="comment-79">
      </form> 
    </div>
    <div class="clear"></div>
  </div>
</li>

これは私のjQueryコードです:

$('.user-status-buttons').click(function() {
    var id = $(this).attr('id');
    $("#commentbox-"+id).slideToggle("fast");
    $("#commentbox-"+id+" #StatusMessageMessage").focus();
    return false;
});
23
Harsha M V

ジェイコブへの返信でのあなたのコメントに基づいて、おそらくあなたがしたい:

$('.user-status-buttons').click(function(){

    var id = $(this).attr('id');
    $("#commentbox-"+id).slideToggle("fast", function(){
        $("#commentbox-"+id+" #StatusMessageReplyMessage").focus();
    });

    return false;
});

これにより、#StatusMessageReplyMessage要素のフォーカススライド効果が終了しました。

26

私はタイマーを使用してテキストエリアにフォーカスします:

setTimeout(function() {
 $el.find('textarea').focus();
}, 0);
29
Roman Yudin

最も簡単な解決策は、 jQuery focus を使用することです

  $('#StatusMessageReplyMessage').focus();

注:コンソールでこれをテストしている場合、Chromeはフォーカスをコンソールに送り返します!これにより、実際には完全に機能しているにもかかわらず、機能していなかったと思わせることができます。あなたの環境でスクリプト/動作をつかむ他の焦点の、それはすべて大丈夫です:)

17
zod