Onclick function

Fermé
helloworld - 3 nov. 2018 à 16:43
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 - 3 nov. 2018 à 18:16
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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
3 nov. 2018 à 16:55
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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
3 nov. 2018 à 16:57
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
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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689 > helloworld
3 nov. 2018 à 18:16
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