2009-08-21 18 views
6

我想有一個文本輸入焦點選擇所有文本里面,如果有的話。這樣,我可以點擊文本輸入並開始輸入,而不必清除當前值,假設我想覆蓋文本輸入中已有的內容。jQuery設置選定的文本

我該如何用jQuery做到這一點?

+0

是不是在大多數瀏覽器的默認行爲?我只是用FireFox,Opera和IE試了一下,當我選中它時,它們都會突出顯示文本輸入的內容。 – 2009-08-21 21:48:33

+0

克里斯,對不起。看起來你是對的。我不記得是什麼讓我走下了尋找這條路的道路,但我被搜索到了,所以我忘記了......試試:) – 2009-08-22 14:49:30

+0

啊,我現在記得。當您將鼠標放入輸入字段時,文本將被*選中。但是你是正確的,它*是你輸入字段中的* tab時的默認行爲。我將編輯帖子。 – 2009-08-22 19:25:08

回答

6

Couple鏈接here

$("#myInputField").focus(function(){ 
    // Select input field contents 
    this.select(); 
}); 

// Add this behavior to all text fields 
$("input[type=text]").focus(function(){ 
    // Select field contents 
    this.select(); 
}); 
4

只選擇文字,你會做這樣的事情:

$(".inputs-to-which-you-want-to-apply-this-behavior").focus(function() { 
    this.select(); 
}); 

另一種方法,它不選擇文本,而是刪除它(只更換如果你離開框爲空,將是這個樣子:

$(document).ready(function() { 
    $(".inputs-that-currently-have-a-default-value-in-them").each(function() { 
    var original = $(this).val(); 
    $(this).focus(function() { 
     if ($(this).val() == original) 
      $(this).val(''); 
    }); 

    $(this).blur(function() { 
     if ($(this).val() == '') 
     $(this).val(original); 
    }); 
    }); 
}); 

(我更喜歡後一種方法,如果文本在開始的文本框中輸入的是佔位符文本,如「輸入您的姓名」,但如果框中的內容是,例如,我上次輸入的名稱最初只是選擇文本的原始想法肯定會更好。)

0

從我嘗試的這是我使用的大多數瀏覽器的默認行爲。

雖然select()函數做別人曾說過的功能。相反,我認爲它可以將輸入字段的值設置爲空白,如果該字段爲焦點。

喜歡的東西:

$(":input").focus = function(){if(this.type=="text"){value=""}return true};