2010-05-10 13 views
1

我希望我的網站上的輸入字段在用戶第一次點擊時選擇所有文本,但在IE8中,恢復正常。在FF中正常工作。jQuery專注於輸入/文本區的內容 - 在IE8中無法正常工作

我的js代碼:

$(document).ready(function() { //HTML DOM document is ready 
    // Add this behavior to all text fields 
    $("input[type='text'], textarea").live("focus", function(){ 
             // Select field contents 
             this.select(); 
             }); 
}); 

任何想法?我已經嘗試在「.select()」之後添加「.focus()」,並且奇怪的是它可以工作,但是會在FF和IE中引發大量js錯誤。

由於

回答

2

嘗試jQuery對象而不是DOM元素.select(),和事件更改爲click。當你進入該字段時,默認情況下應選擇文本。

$("input[type='text']").live("click", function(){ 
     // Select field contents 
     $(this).select(); 
    }); 

那麼,這一個被踢我在後方的某些原因。我可以發誓我以前做過這件事,但無法弄清楚它是如何做到的。

這是我想出的最好的。它使用setTimeout()推遲.select(),直到click事件觸發爲止。也許有更好的方法?希望能幫助到你。

$('input[type=text]').live('focus', function() { 
    var $th = $(this); 
    setTimeout(function(){$th.select();}, 50); 
}); 
+0

這樣做的問題是,現場花絮每次我點擊 - 所以,如果用戶點擊到現場對其進行編輯(說來糾正一個電子郵件地址/拼寫),他們不能阻止整個領域從每次都被選中。 – katebp 2010-05-12 09:06:20

+0

@katebp - 一種解決方案可能是跟蹤哪個輸入焦點放在一個變量中,然後在'click()'處理程序中測試是否最後有焦點。如果是這樣,不要'select()'。我會在一分鐘內更新我的答案。 – user113716 2010-05-12 22:35:20

+0

@katebp - 對不起,延遲。更新了我的答案。不知道它是不是最好的解決方案,但似乎在IE8中工作。讓我知道結果如何。 – user113716 2010-05-12 23:24:44