Supprimer la valeur par défaut d'un texte d'entrée en cliquant

j'ai un texte d'entrée:

<input name="Email" type="text" id="Email" value="email@abc.com" />

je veux mettre une valeur par défaut comme "Quelle est votre question de programmation ? être spécifique."dans StackOverFlow, et lorsque l'utilisateur clique sur la valeur par défaut disparait.

57
demandé sur Wassim AZIRAR 2010-06-06 17:26:34

13 réponses

référence Pour l'avenir, je ont pour inclure le HTML5 façon de le faire.

<input name="Email" type="text" id="Email" value="email@abc.com" placeholder="What's your programming question ? be specific." />

si vous avez un doctype HTML5 et un navigateur conforme HTML5, cela fonctionnera. Cependant, de nombreux navigateurs ne prennent pas actuellement en charge ce , donc au moins les utilisateurs D'Internet Explorer ne seront pas en mesure de voir votre espace réservé. Toutefois, voir http://www.kamikazemusic.com/quick-tips/jquery-html5-placeholder-fix / ( archive.org version ) pour une solution. En utilisant cela, vous serez très moderne et conforme aux normes, tout en fournissant la fonctionnalité à la plupart des utilisateurs.

Aussi, le lien fourni est bien testé et développé une solution qui devrait fonctionner hors de la boîte.

106
répondu MvanGeest 2016-01-14 18:13:00

EDIT : bien que cette solution fonctionne, je vous recommande d'essayer la solution de MvanGeest en dessous de qui utilise l'attribut placeholder - et un repli javascript pour les navigateurs qui ne le supportent pas encore.

si vous cherchez un Mootools équivalent à la réplique de JQuery dans la réponse de MvanGeest, en voici un .

--

vous devriez probablement utilisez les événements onfocus et onblur pour aider les utilisateurs de clavier qui tabulent les formulaires.

voici un exemple:

<input type="text" value="email@abc.com" name="Email" id="Email"
 onblur="if (this.value == '') {this.value = 'email@abc.com';}"
 onfocus="if (this.value == 'email@abc.com') {this.value = '';}" />
63
répondu mqchen 2017-05-23 12:34:41

C'est un peu plus propre, je pense. Notez l'usage de la propriété "defaultValue" de l'input:

<script>
function onBlur(el) {
    if (el.value == '') {
        el.value = el.defaultValue;
    }
}
function onFocus(el) {
    if (el.value == el.defaultValue) {
        el.value = '';
    }
}
</script>
<form>
<input type="text" value="[some default value]" onblur="onBlur(this)" onfocus="onFocus(this)" />
</form>
26
répondu Jani 2010-06-06 14:50:25

en utilisant jQuery, vous pouvez faire:

$("input:text").each(function ()
{
    // store default value
    var v = this.value;

    $(this).blur(function ()
    {
        // if input is empty, reset value to default 
        if (this.value.length == 0) this.value = v;
    }).focus(function ()
    {
        // when input is focused, clear its contents
        this.value = "";
    }); 
});

et vous pourriez tout mettre dans un plug-in personnalisé, comme ça:

jQuery.fn.hideObtrusiveText = function ()
{
    return this.each(function ()
    {
        var v = this.value;

        $(this).blur(function ()
        {
            if (this.value.length == 0) this.value = v;
        }).focus(function ()
        {
            this.value = "";
        }); 
    });
};

Voici comment vous utiliseriez le plug-in:

$("input:text").hideObtrusiveText();

avantages à utiliser ce code est:

  • Sa discrète et de ne pas polluer les DOM
  • réemploi de Code: il fonctionne sur plusieurs champs
  • il ressort la valeur par défaut des entrées par lui-même





Non-jQuery approach:

function hideObtrusiveText(id)
{
    var e = document.getElementById(id);

    var v = e.value;

    e.onfocus = function ()
    {
        e.value = "";
    };

    e.onblur = function ()
    {
        if (e.value.length == 0) e.value = v;
    };
}
7
répondu cllpse 2010-06-06 14:33:36

Inscrivez ce qui suit à l'intérieur de la balise , il suffit d'ajouter onFocus= "value= ""pour que votre code final ressemble à ceci:

<input type="email" id="Email" onFocus="value=''"> 

utilise le support d'événement javascript onFocus ().

3
répondu Myke 2013-07-01 20:56:33

utilisez simplement une étiquette placeholder dans votre entrée au lieu de value

2
répondu 072et 2015-10-19 05:55:31

nous pouvons le faire sans utiliser js de la manière suivante en utilisant l'attribut "placeholder" de html5 (le texte par défaut disparaît lorsque l'utilisateur commence à taper ,mais pas en cliquant simplement )

<input type="email" id="email" placeholder="xyz@abc.com">

voir ceci: http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_placeholder

1
répondu c-h-a-r-a-n 2014-05-12 11:26:47

<input name="Email" type="text" id="Email" placeholder="enter your question" />

l'attribut placeholder spécifie un petit indice qui décrit la valeur attendue d'un champ d'entrée (par exemple une valeur d'échantillon ou une brève description du format attendu).

le petit indice est affiché dans le champ d'entrée avant que l'utilisateur n'entre une valeur.

Note: l'attribut placeholder fonctionne avec les types d'entrée suivants: texte, Recherche, url, tel, email, et mot de passe.

je pense que ça va aider.

1
répondu kkk 2014-11-21 14:19:22

voici du javascript très simple. Ça me va très bien :

function sFocus (field) {
    if(field.value == 'Enter your search') {
        field.value = '';
    }
    field.className = "darkinput";
}

function sBlur (field) {
    if (field.value == '') {
        field.value = 'Enter your search';
        field.className = "lightinput";
    }
    else {
        field.className = "darkinput";
    }
}
0
répondu ELO 2011-11-17 13:29:16

pourquoi supprimer la valeur? son utile, mais pourquoi ne pas essayer CSS

input[submit] {
   font-size: 0 !important;
}

la valeur est importante pour vérifier et valider ur PHP

0
répondu KingRider 2015-10-09 18:30:58

Voici une solution jQuery. Je laisse toujours réapparaître la valeur par défaut lorsqu'un utilisateur efface le champ d'entrée.

<input name="Email" value="What's your programming question ? be specific." type="text" id="Email" value="email@abc.com" />

<script>
$("#Email").blur(
    function (){
        if ($(this).val() == "")
            $(this).val($(this).prop("defaultValue"));
        }
).focus(
    function (){
        if ($(this).val() == $(this).prop("defaultValue"))
            $(this).val("");
    }
);
</script>
0
répondu Kent Munthe Caspersen 2015-10-26 20:53:44

Je n'ai pas vu de réponses aussi simples que celle-ci, donc peut-être que ça aidera quelqu'un.

var inputText = document.getElementById("inputText");
inputText.onfocus = function(){ if (inputText.value != ""){ inputText.value = "";}; }
inputText.onblur = function(){ if (inputText.value != "default value"){ inputText.value = "default value";}; }
0
répondu Brian M 2016-09-02 18:32:14

voici un moyen facile.

#animal représente n'importe quel bouton du DOM.

#animal-value est le code d'entrée visé.

$("#animal").on('click', function(){
    var userVal = $("#animal-value").val(); // storing that value
    console.log(userVal); // logging the stored value to the console
    $("#animal-value").val('') // reseting it to empty
});
0
répondu accimeesterlin 2017-03-06 04:22:54