我有一個jQuery的事件處理程序,基本上是這樣的:WebKit中着眼於一個textarea jQuery的高度動畫後
$("textarea").live("focus, click", function() {
var o = $(this),
expand_height = "60px";
o.animate({height : expand_height});
}
正如你所看到的,聚焦狀態或的onclick它應該是動畫textarea的擴張從最初的高度(20px)到它的展開高度(60px)。實際上還有其他一些事情(如清除默認值),但這是唯一給我帶來麻煩的部分。
在Firefox/IE中,textarea保留焦點,而高度動畫和用戶可以在單擊textarea後立即開始輸入。在Chrome/Safari中,textarea失去焦點,所以用戶無法輸入框。如果您在動畫完成時添加回調以專注於該框,則不起作用。如果你添加一個select()關注(),如下面的例子,它的工作:
$("textarea").live("focus, click", function() {
var o = $(this),
expand_height = "60px";
o.animate({height : expand_height}, function() {
o.select().focus();
});
}
不幸的是,當用戶點擊並開始打字,前幾個字符可能會丟失,因爲他們必須等待爲動畫完成。
這是一個webkit的bug嗎?我如何讓動畫運行並立即響應用戶的輸入?
感謝您的快速反應。我實際上看到了這個問題,並在問這裏之前嘗試瞭解決方案。我添加了$(「textarea」)。live(「mouseup」,function(e){e.preventDefault()});在這種情況下這不起作用。 – VNO 2010-08-06 20:19:09