2009-12-15 7 views
7

Je voudrais savoir comment mettre du texte dans une zone de texte lorsque la page se charge. Exemple: Si j'ai une page de connexion, j'aurais 2 zones de texte nommées "nom d'utilisateur" et "mot de passe". Quand la page se charge, je veux que la zone de texte soit chargée avec "nom d'utilisateur" écrit à l'intérieur, donc je n'aurai pas à mettre une étiquette pour cela à l'extérieur. Mais lorsque l'utilisateur clique dans la zone de texte, il devrait disparaître. Comment puis-je faire cela?Javascript "filigranes" pour les zones de texte

+0

http://stackoverflow.com/a/16471949/1257652 –

Répondre

19
<input name="q" onfocus="if (this.value=='search') this.value = ''" type="text" value="search"> 

... dans la zone de recherche Stack Overflow .


Vous pouvez également ajouter l'événement onblur pour vérifier: if (this.value=='') this.value = 'search'

Ce serait réimprimez le filigrane lorsque l'utilisateur clique en dehors de la zone de texte et le champ est vide.

+2

+1 pour la simplicité. – Brandon

+2

Je voudrais également rendre le texte plus grisâtre et non noir – Faruz

0

JS:

function clearDefault(ctl){ 
     if(ctl.value==ctl.defaultValue) { ctl.value = ""; } 
    } 

Dans votre zone de texte comprennent onfocus="clearDefault(this)" et définir son texte à "nom d'utilisateur" ou "mot de passe".

+0

N'utilisez pas l'attribut 'onfocus'. Utiliser les événements à la place –

+2

Les attributs 'onfocus' (ainsi que' onblur') sont essentiellement des événements. Leurs valeurs sont égales au corps d'une fonction liée à l'événement. Donc avoir 'clearDefault (this)' pour 'onfocus' est essentiellement lié à votre gestionnaire d'événement' focus': 'function() {clearDefault (this); } ' –

4

En termes profanes:

  • En se concentrant sur l'entrée, si la valeur est « Nom d'utilisateur » set alors à « »
  • Lors du retrait de focus de la zone, si la valeur est « » (à-dire rien n'a été entré), remis à zéro à « Nom d'utilisateur » pour fournir encore des commentaires à l'utilisateur car ils ne sont pas encore entré les données

le code:

<input value="Username" onfocus="if(this.value=='Username') this.value = ''" onblur="if(this.value=='') this.value = 'Username'" type="text" /> 
5

Une façon plus moderne est d'utiliser "PlaceHolder"

<input type="text" placeholder="search" /> 
+0

C'est élégant! – theblackpearl

Questions connexes