2010-04-25 34 views
2

我正在寫一個JavaScript聊天應用程序,但我遇到了一個小問題。選擇文字時不要閃光onfocus?

下面是HTML結構:

<div id="chat"> 
    <div id="messages"></div> 
    <textarea></textarea> 
</div> 

當用戶點擊/集中在聊天框,我想文本框被自動聚焦。我對聊天框此onfocus處理程序:

chat.onfocus = function() { 
    textarea.focus(); 
} 

這工作,但問題是,在Firefox,這使得它無法在消息div選擇文本,因爲當你嘗試點擊就可以了,重點轉移到textarea。我怎樣才能避免這個問題?

(半相關的問題:在Chrome中,textarea.focus()似乎沒有鍵盤焦點轉移到textarea;它僅突出了盒子IE8似乎沒有點擊時向onfocus迴應可言,即使它。 ?tabindex設置任何想法,爲什麼)

回答

0

我發現了一個解決方案,在點擊聊天時自動選擇文本區域,同時仍然可以選擇文本:只需將div更改爲label即可。

<label id="chat" style="display: block"> 
    <div id="messages"></div> 
    <textarea></textarea> 
</label> 

不幸的是,Firefox有一個錯誤,這錯誤overcorrects和力量label是內聯的,但是這可以通過使用JavaScript動態創建它是固定的。

0

你可能想嘗試的setTimeout集中文本區域,像這樣:

setTimeout(function() { 
    textarea.focus(); 
}, 1000); 
0

事件聚焦狀態只存在於表單元素:LABEL,INPUT,SELECT, TEXTAREA和BUTTON。使用chatbox的onclick事件。

1

如果您使用鼠標上移事件,該怎麼辦?然後檢查用戶是否有任何選擇,如果不給textarea焦點。那有意義嗎?

關於跨瀏覽器問題,你可以看看jQuery或其他JavaScript庫。如果你不打算使用它,你不需要整個事情,但你可以抓住部件,使焦點在所有瀏覽器中工作。