Onclick function

Bonjour,

Quelle est la différence entre c'est 2 bouts de code ? Et pourquoi le second affiche directement "Ca marche!" sans le click ?

$('textarea').on('click', change);
function change(){
    $('textarea').prop('value', 'Ca marche !');
}


$('textarea').on('click',change());
function change(){
    $('textarea').prop('value', 'Ca marche !');
}

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Bonjour,

    La première se déclenche qu'au click
    La seconde.. se déclenche dès le chargement de la page .. par contre... pourquoi.. c'est une bonne question.

    La troisième syntaxe fonctionne également comme attendue
    $('textarea').on('click',function (){
        $('textarea').prop('value', 'Ca marche !');
    });
    


    1. Modérateur
      Et si tu veux que la value ne change que pour la textarea ciblée
      $('textarea').on('click',function (){
          $(this).prop('value', 'Ca marche !');
      });
      

      Et au lieu d'utiliser le "prop" tu peux simplement faire
      $('textarea').on('click',function (){
          $(this).val('Ca marche !');
      });
      
    2. Merci beaucoup et effectivement je trouve cela étrange que il le fassent dès le chargement de la page au niveau de la deuxième syntaxte.
      Autre chose, est ce possible de faire
      $('input:focus').css('backgroundColor','red');
      ?

      Je veux donc changer la couleur sur les input qui sont focus.

      Cela ne fonctionne pas mais je ne sais pas pourquoi ? Ducoup j'ai fais onfocus mais ya t'il pas un autre moyen ?
    3. Modérateur
      @helloworldNon.
      Le "on" sert à initialiser une action sur un évènement donné quand l'action correspond (click, change... ).

      Ce que toi tu as écris ne s'exécute qu'au moment ou le script arrive sur cette ligne de code... et si à ce moment là tu n'as rien de "focus".. normal que ça ne marche pas.
      A la limite:
      $('input').click(function(){
      	$('input:focus').css('backgroundColor','red');
      });
      

      mais qui n'a pas d’intérêt puisque tu peux tout simplement faire
      $('input').click(function(){
      	$(this).css('backgroundColor','red');
      });