64 votes

HTML/CSS Faire une zone de texte avec du texte qui est grisé, et qui disparaît quand je clique pour entrer l'info, comment ?

Comment créer une zone de texte dont le contenu est grisé et qui, lorsque je clique dessus pour saisir du texte, la partie grisée disparaît et me permet de saisir le texte souhaité ?

Ejemplo:

Une zone de texte "Prénom". Les mots "Prénom" sont à l'intérieur de la zone de texte en grisé, lorsque je clique, ces mots disparaissent et j'écris mon nom dedans.

10 votes

Il s'agit d'une fonctionnalité appelée "placeholder". Chrome, Firefox et IE10 prennent en charge l'attribut placeholder html5.

118voto

Psytronic Points 2886

Chrome, Firefox, IE10 et Safari prennent en charge l'attribut placeholder html5.

<input type="text" placeholder="First Name:" />

Pour obtenir une solution plus multi-navigateurs, vous devrez utiliser du javascript. Il existe de nombreuses solutions pré-fabriquées, mais je n'en connais aucune de mémoire.

http://www.w3schools.com/tags/att_input_placeholder.asp

55voto

Floern Points 11484

Cette réponse illustre une approche pré-HTML5. Veuillez consulter le site La réponse de Psytronic pour une solution moderne utilisant le placeholder attribut.


HTML :

<input type="text" name="firstname" title="First Name" style="color:#888;" 
    value="First Name" onfocus="inputFocus(this)" onblur="inputBlur(this)" />

JavaScript :

function inputFocus(i) {
    if (i.value == i.defaultValue) { i.value = ""; i.style.color = "#000"; }
}
function inputBlur(i) {
    if (i.value == "") { i.value = i.defaultValue; i.style.color = "#888"; }
}

0 votes

Je pense que cette réponse a été remplacée par "placeholder" en HTML5 (voir la réponse de Psytronic).

0 votes

@SteveSmith en effet, j'ai ajouté une note à ce sujet.

12voto

David Houde Points 3942

Avec HTML5, vous pouvez le faire de manière native : <input name="first_name" placeholder="First Name">

Cette fonction n'est cependant pas prise en charge par tous les navigateurs (IE).

Cela peut marcher :

<input type="first_name" value="First Name" onfocus="this.value==this.defaultValue?this.value='':null">

Sinon, si vous utilisez jQuery, vous pouvez utiliser .focus et .css pour modifier la couleur.

7voto

Jay1b Points 66

Si vous ne visez que le HTML5, vous pouvez utiliser :

<input type="text" id="firstname" placeholder="First Name:" />

Pour les navigateurs non HTML5, je m'inspirerais de la réponse de Floern en utilisant jQuery et en rendant le javascript non intrusif. J'utiliserais également une classe pour définir les propriétés de flou.

$(document).ready(function () {

    //Set the initial blur (unless its highlighted by default)
    inputBlur($('#Comments'));

    $('#Comments').blur(function () {
        inputBlur(this);
    });
    $('#Comments').focus(function () {
        inputFocus(this);
    });

})

Fonctions :

function inputFocus(i) {
    if (i.value == i.defaultValue) {
        i.value = "";
        $(i).removeClass("blurredDefaultText");
    }
}
function inputBlur(i) {
    if (i.value == "" || i.value == i.defaultValue) {
        i.value = i.defaultValue;
        $(i).addClass("blurredDefaultText");
    }
}

CSS :

.blurredDefaultText {
    color:#888 !important;
}

5voto

Vivek Mhatre Points 31

Le moyen le plus court est d'ajouter directement le code ci-dessous comme attributs supplémentaires dans le type d'entrée que vous souhaitez modifier.

onfocus="if(this.value=='Search')this.value=''" 
onblur="if(this.value=='')this.value='Search'"

Remarque : remplacez le texte "Search" par "go" ou tout autre texte en fonction de vos besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X