2009-08-21 11 views
6

Je veux avoir une entrée de texte qui, au foyer, sélectionne tout le texte à l'intérieur, le cas échéant. C'est ainsi que je peux cliquer sur l'entrée de texte et commencer à taper plutôt que d'avoir à effacer la valeur actuelle, en supposant que je voulais écraser ce qui était déjà dans la saisie de texte.jQuery définir le texte sélectionné

Comment est-ce que je ferais ceci avec jQuery?

+0

est-ce pas le comportement par défaut dans la plupart des navigateurs? Je l'ai juste essayé avec FireFox, Opera, et IE et ils mettent tous en évidence le contenu d'une entrée de texte quand je tabule dedans. –

+0

Chris, désolé. On dirait que tu as raison. Je ne me souviens pas de ce qui m'a mené sur le chemin de la chasse, mais je me suis tellement emmitouflé dans la recherche que j'ai oublié de l'essayer ... :) –

+0

Ah, je me souviens maintenant. Le texte n'est * pas * sélectionné lorsque vous passez la souris dans le champ de saisie. Mais vous avez raison, c'est * le comportement par défaut lorsque vous * tabulez * dans le champ de saisie. Je vais modifier le post. –

Répondre

6

Couple des liens 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

Pour Sélectionnez simplement le texte, vous feriez quelque chose comme:

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

Une autre approche, qui ne sélectionner le texte, mais plutôt supprime (seulement pour le remplacer si vous laissez la case vide, cela ressemblerait à ceci:

$(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); 
    }); 
    }); 
}); 

(Je préfère cette dernière approche si le texte c'est dans la boîte pour commencer est le texte d'espace réservé comme 'Entrez votre nom' mais si ce qui est dans la boîte est, par exemple, le nom que j'ai entré la dernière fois votre idée originale de sélectionner le texte serait certainement mieux.)

0

De ce que j'ai essayé, c'est le comportement par défaut dans la plupart des navigateurs que j'utilise.

Bien que la fonction select() fasse ce que d'autres l'ont dit. Au lieu de cela j'ai pensé que cela fonctionnerait pour définir la valeur du champ d'entrée à vide si le champ était concentré.

Quelque chose comme:

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