11
votes

Comment prépopuler les champs de texte d'entrée avec l'invite de texte qui disparaît sur la dactylographie (jQuery)

Lorsque vous cliquez sur le bouton "Poser une question" sur le bouton de pile, la section Titre de la question est préparée avec le texte gris clair qui lit xxx

puis lorsque vous Cliquez dans le champ de titre et commencez à taper que le texte disparaît.

Je veux faire la même chose dans mon application.

Y a-t-il une astuce dans JQuery pour accomplir cela?

et, en particulier, comment modifiez-vous la couleur de texte de la couleur claire pour le texte d'espace réservé à la couleur du texte par défaut lorsque quelqu'un commence à taper?


0 commentaires

5 Réponses :


1
votes

Bien que je ne sais pas comment le faire dans jQuery, il est assez simple de le faire directement avec JavaScript. Il suffit d'attribuer une fonction qui efface le champ de texte sur la propriété OnClick du champ, comme:

function clear()
{
    document.getElementById("textID").value = "";
}


0 commentaires

4
votes
<input type="text" value="whats your programming question" id="txt"/>


$(document).ready(function(){
    $('#txt').click(function(){
          this.value = '';
          this.style.color = 'black';
    }).blur(function(){
      if ( this.value == '')
          this.value = 'whats your programming question';
           this.style.color = 'lightgray';
    });
});

2 commentaires

Cela ressemble à cela à peu près le couvre, à l'exception de la question de la modification de la couleur du texte de Grey clair pour le texte de l'espace réservé à la couleur du texte par défaut lorsque quelqu'un commence à taper. Savez-vous comment cela est accompli?


Oui, j'ai édité la réponse ci-dessus, il suffit de jouer avec les propriétés de style, vous pouvez changer la classe CSS aussi une meilleure approche si le style diffère plus que de la couleur



21
votes

Le moyen le plus simple d'y parvenir est avec l'attribut HTML (BEST HTML5) 'S CODE> Attribut CODE>:

$(document).ready(
    function(){
        $('input:text').each(
            function(){
                $(this)
                    .val($(this).attr('placeholder'))
                    .css('color','#999');
                $(this).click(
                    function(){
                        $(this)
                            .val('')
                            .css('color','#000');
                    });
                $(this).blur(
                    function(){
                        if ($(this).val() === ''){
                            $(this)
                                .val($(this).attr('placeholder'))
                                .css('color','#999');
                        }
                    });
            });
    });


2 commentaires

Est-ce que cela rendrait l'espace réservé au texte une couleur plus claire que le texte saisi?


Cela dépend de la mise en œuvre de la navigateur, généralement (au moins avec le chrome 7.0.517.44 et Firefox 3.6.12) Le texte est rendu dans une couleur plus claire. Je ne suis pas sûr de la mise en œuvre d'IE ou de l'opéra, cependant.



4
votes

Les solutions présentées jusqu'à présent ont un inconvénient: le texte invité est soumis au serveur si l'utilisateur n'entre aucune valeur dans l'entrée. Vous pouvez trouver ici une meilleure solution qui s'occupe également de ce problème: http://kyleschaefeffer.com/best-practices/input-prompt-text/


0 commentaires