2010-11-16 20 views
20

odaklanır.jQuery metin alanları

<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> 

Bu benim jQuery kodudur: Yakup'a cevapta Yorumlarınız dayanarak

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

Genellikle aynı ifadede 2' id' seçiciler birleştirmek istemiyoruz, bu yanlış bir uygulamadır DOM. –

+0

@Jacob butonu üzerinde sadece bir numara var ama li element üzerinde bende comment-id var. Bu yardım etmemeli mi? –

cevap

23

, belki de istiyorum:

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

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

    return false; 
}); 

Bu #StatusMessageReplyMessage eleman odağı vermelidir'dan sonra slayt efekti bitti. Metin alanları odaklanmak için zamanlayıcı kullanın

+0

teşekkürler. D StatusMessageReplyMessage Bu çözüm ile çalışır yerine StatusMessageMessage –

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

: id`s boyunca benzersiz olması içindir `olarak

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

ait olmalıydı: ben yanlış metin alanı kimliği yazmıştı. Onun neden çalışmadığını açıklayabilir misiniz? – Mutant

+1

Anladığım kadarıyla, tıklamanın kendisi, kendi odağınızı geçersiz kılarak, olay işleme sırasında odaklanacak bir şey verir. Zaman aşımı, geçerli senkronize olay işleme tamamlandıktan sonra odağınızı yürütür. – dule

İlgili konular