2009-06-21 10 views
25

J'ai essayé cela, mais il ne fonctionne pas:Comment effacer une zone de texte onfocus?

$(function() { 
    $('input[type=text]').focus(function() { 
     $(this).val() == ''; 
     }); 
}); 
+1

@ $ (this) .val() == '' vous faisiez une vérification d'égalité et comme @Jon Erickson dit que val() est avry pratique jQuery fonction – Rony

Répondre

76

Pour définir la valeur, vous devez passer la nouvelle valeur en tant que paramètre. C'est une chose géniale avec la fonction .val() jQuery.

$(this).val('') 

un coup d'oeil à la jQuery API et la recherche de « val »

+1

lol qui a fonctionné. Je me demande pourquoi ils l'ont fait comme ça .. merci – sarmenhb

+0

pas de problème ... je l'ai appris à la dure aussi bien =) –

+8

Ils "l'ont fait comme ça" parce que c'est la seule chose qui a du sens à distance. Ce que vous avez essayé de faire n'est pas une affectation (=) en premier lieu, c'est une comparaison (==). Et même si un langage permet de renvoyer une valeur d'une fonction qui pourrait être affectée de cette façon, c'est une idée horrible; alors si vous avez fait "var x = $ (this) .val(); x = 27;" vous changeriez la valeur non seulement de x, mais de votre contribution, d'une manière complètement contre-intuitive et incroyablement difficile à déboguer. – chaos

4

Un peu plus tard, mais une autre approche serait ce

link text

Lorsque vous cliquez sur la zone de saisie, il choisira tout le texte (pas clair) seulement si c'est la valeur par défaut sur la boîte. De cette façon, si un utilisateur tape quelque chose, il doit revenir en arrière pour l'éditer, il n'est pas effacé ce qui pourrait être assez ennuyeux!

La sélection du texte au lieu de l'effacer rappelle également l'exemple de l'utilisateur. Un à garder à l'esprit, je suppose.

+0

cette astuce était vraiment intéressante! – sivann

Questions connexes