Onclick function

helloworld -  
jordane45 Messages postés 38486 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

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