Onclick function

helloworld -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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 !');
    });
    


    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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 !');
      });
      
      0
    2. helloworld
       
      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 ?
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > helloworld
         
        Non.
        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');
        });
        
        0