J'essaie d'effacer un champ de texte et cela ne fonctionne pas. Je reçois l'alerte mais elle ne l'efface pas. Qu'est-ce que je fais mal?

Il s'agit d'une fonction générique qui peut être appelée sur n'importe quel champ de texte.

<!DOCTYPE html>
<html>    
<head>

    <script type="text/javascript">

             function clearThis(target)
            {
                alert('before...' + target.value);

                if ($(target).value == "Search  ")
                {
                    $(target).value = "set to something else";   
                    $(target).style.color = '#000000';
                    $(target).style.fontStyle = 'italic';     
                }
                else
                {
                   $(target).value = "";
                }

                alert('after...' + target.value);            
            }           

    </script>         

    <title>My page</title>

</head>

<body>
   <div class="historysearch">
      <input id="username" type="text" value="Search  " onclick="clearThis(this)"/>                              
   </div> 
</body>

</html>         
2
user3020047 9 mars 2016 à 15:52

5 réponses

Meilleure réponse

Votre utilisation de $ suggère que vous utilisez JQuery mais vous n'avez pas inclus la bibliothèque dans votre page.

Si vous utilisez jQuery, utilisez la méthode jQuery correcte pour obtenir et définir des valeurs (.val ()) et les styles (.css ()). Et bien sûr, incluez la bibliothèque jQuery ...

function clearThis(target) {
  alert('before...' + target.value);

  if ($(target).val() == "Search  ") {
    $(target).val('set to something else');
    $(target).css({'color':'#000000', 'font-style': 'italic'})
  } else {
    $(target).val('');
  }

  alert('after...' + target.value);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class="historysearch">
  <input id="username" type="text" value="Search  " onclick="clearThis(this)" />
</div>

Si, en fait, vous n'utilisez pas avec jQuery, vous devez omettre la syntaxe $() de votre code.

function clearThis(target) {
  alert('before...' + target.value);

  if (target.value == "Search  ") {
    target.value = "set to something else";
    target.style.color = '#000000';
    target.style.fontStyle = 'italic';
  } else {
    target.value = "";
  }

  alert('after...' + target.value);
}
<div class="historysearch">
  <input id="username" type="text" value="Search  " onclick="clearThis(this)" />
</div>
1
Turnip 9 mars 2016 à 13:04

Tu le fais incorectement.

$(target) est un objet jquery et non js donc value ne peut pas être accessible

Vous pouvez faire comme ça (js):

target.value

ou

Comme ça (jquery) $(target).val()

0
Anand Singh 9 mars 2016 à 13:10

Deux choses que vous devez mettre à jour dans votre code en premier est que vous devez ajouter le fichier jquery.js et le second si vous voulez changer la valeur passer par id ou classe.

<!DOCTYPE html>
<html>    
<head>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

    <script type="text/javascript">

             function clearThis(target)
            {
                if (target.value == "Search  ")
                {
                    $("#username").val("set to something else");   
                }
                else
                {
                   $("#username").val('');
                }

                alert('after...' + target.value);            
            }           

    </script>         

    <title>My page</title>

</head>

<body>
   <div class="historysearch">
      <input id="username" type="text" value="Search  " onclick="clearThis(this)"/>                              
   </div> 
</body>

</html> 
0
lalitpatadiya 9 mars 2016 à 13:07

Veuillez vérifier le code ci-dessous

function clearThis(target)
        {

           // alert('before...' + target.value);
           //alert(target);
            if (target.value == "Search  ")
            {
                target.value = "set to something else";   
                target.style.color = '#000000';
                target.style.fontStyle = 'italic';     
            }
            else
            {
               target.value = "";
            }
            //alert('after...' + target.value);            
        }         

Code HTML

<div class="historysearch">
   <input id="username" type="text" value="Search  " onclick="clearThis(this)"/>                              
</div> 
0
Dhaval Patel 9 mars 2016 à 13:03

Pour effacer la valeur de la zone de texte à l'aide de JQuery, utilisez la ligne suivante:

$ (contrôle) .valve ("");

0
Prasad Guduri 9 mars 2016 à 13:42