172 votes

Ajouter l'événement onClick de façon dynamique en utilisant jQuery

En raison de l'utilisation d'un plugin, je ne peux pas ajouter l'attribut "onClick" aux entrées du formulaire HTML comme d'habitude. Un plugin gère la partie formulaires de mon site et ne propose pas d'option pour faire cela automatiquement.

En gros, j'ai cette entrée :

<input type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

Je veux lui ajouter un onClick avec jQuery onload pour qu'il soit comme ceci :

<input onClick="myfunction()" type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

Comment dois-je m'y prendre ?

Je sais que ce n'est peut-être pas une pratique courante, mais cela semble être la solution la plus simple dans ma situation.

Je suis un novice en matière de jQuery et toute aide est la bienvenue.

271voto

hunter Points 33850

Vous pouvez utiliser le click et appelez votre fonction ou déplacez votre logique dans le gestionnaire :

$("#bfCaptchaEntry").click(function(){ myFunction(); });

Vous pouvez utiliser le click et définissez votre fonction comme le gestionnaire :

$("#bfCaptchaEntry").click(myFunction);

.click()

Liez un gestionnaire d'événement à l'événement JavaScript "click", ou déclenchez cet événement sur un élément.

http://api.jquery.com/click/


Vous pouvez utiliser le on lié à l'événement "click" et appeler votre fonction ou déplacer votre logique dans le gestionnaire :

$("#bfCaptchaEntry").on("click", function(){ myFunction(); });

Vous pouvez utiliser le on lié à l'événement "click" et définissez votre fonction comme le gestionnaire :

$("#bfCaptchaEntry").on("click", myFunction);

.on()

Attachez une fonction de gestion d'événement pour un ou plusieurs événements aux éléments sélectionnés.

http://api.jquery.com/on/

0 votes

Simple et facile à comprendre. Exactement ce que je voulais. Une autre question : quel est le moyen le plus simple d'intégrer un changement de couleur d'arrière-plan à l'aide de jQuery ? Ou est-il préférable d'utiliser 'style.backgroundColor = "white";' dans la section des fonctions ?

71voto

Ardalan Shahgholi Points 1437

Essayez cette approche si vous connaissez le nom de l'objet client (peu importe qu'il s'agisse de Button ou de TextBox).

$('#ButtonName').removeAttr('onclick');
$('#ButtonName').attr('onClick', 'FunctionName(this);');

Essayez ceci si vous voulez ajouter l'événement onClick à un objet serveur avec JQuery.

$('#' + '<%= ButtonName.ClientID %>').removeAttr('onclick');
$('#' + '<%= ButtonName.ClientID %>').attr('onClick', 'FunctionName(this);');

23voto

Vega Points 44724

Essayez l'approche ci-dessous,

$('#bfCaptchaEntry').on('click', myfunction);

ou si jQuery n'est pas une nécessité absolue, essayez ci-dessous,

document.getElementById('bfCaptchaEntry').onclick = myfunction;

Cependant, la méthode ci-dessus présente quelques inconvénients car elle définit onclick comme une propriété plutôt que d'être enregistré comme gestionnaire...

Lire la suite de cet article https://stackoverflow.com/a/6348597/297641

0 votes

Lorsque vous dites "Toutefois, la méthode ci-dessus", il n'est pas clair si vous faites référence à la méthode javascript simple. .onclick ou de regrouper les deux versions en une seule par rapport à l'utilisation de l'option .click . Je sais que c'est en fait le premier, car .on enregistre le gestionnaire, mais j'ai dû vérifier ailleurs pour l'apprendre. Il serait bon pour les futurs lecteurs que ce soit plus clair dans votre réponse... ;)

7voto

Vous pouvez également utiliser une fonction de flèche pour la définir :

$(document).ready(() => {
  $('#bfCaptchaEntry').click(()=>{

  });
});

Pour un meilleur support du navigateur :

$(document).ready(function() {
  $('#bfCaptchaEntry').click(function (){

  });
});

7voto

Parv Sharma Points 7070
$("#bfCaptchaEntry").click(function(){
    myFunction();
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X