2010-04-15 91 views
3

我有以下代碼爲什麼textarea上的jquery.animate會使閃爍的光標消失?

$(document).ready(function() { 
    $("#myTextArea").focus(function() { 
     $("#myTextArea").animate({ "height": "75px"}, "normal"); 
     return false; 
    }); 

擴大的文本框,當它獲得焦點。擴展發生,但閃爍的光標消失,至少在Firefox中!

編輯:文本區仍然是重點,我可以鍵入它。

爲什麼會發生這種情況?有沒有辦法再次顯示它?

在此先感謝

回答

3

return false語句被取消focus行動:)你只有當元素集中獲得一個光標,我只是從你的函數刪除此行。

除此之外,.focus()在文本區域是不是你可以很容易地回收,因爲它有這樣重要的位置,你最好用CSS改變在這裏堅持:

$("#myTextArea").focus(function() { 
    $(this).css({ "height": "75px" }); 
}); 

這根本不會影響遊標行爲,並且工作在saema跨瀏覽器(focus在瀏覽器中仍然不同),但當然不會生成動畫。另一種方法(我還沒有在所有的瀏覽器測試了這)是,你可以用動畫後相同ARGS再次觸發焦點,恢復位置,就像這樣:

$("#myTextArea").focus(function(e) { 
    if($(this).height() == 75) return; 
    $(this).animate({ height: 75}, "normal", function() { 
     $(this).blur().trigger(e); 
    }); 
});​ 

You can test this from here,只是一定要檢查所有瀏覽器,因爲focus行爲可以在它們之間略有不同。

+0

感謝您的回答!不過,我認爲textarea是專注的,因爲我可以輸入它,並且光標不會出現。 我會嘗試這些解決方案,併發布後的一些反饋:) – 2010-04-15 17:43:00

+0

由於某種原因,它是禁用遊標的容器div的CSS ...而我無法設法使它的工作......所以生病使用你的第一個消化不良目前。 Althoug這不是更好的解決方案,如果沒有人回答更好的解決方案,我會接受它。謝謝您的幫助! – 2010-04-15 19:17:29