Appelez l'événement Javascript onchange en modifiant par programmation la valeur de la zone de texte

Le problème auquel je suis confronté est le suivant:

  • J'ai une zone de texte pour une plage de dates le long d'un contrôle de calendrier.
  • Lorsque l'utilisateur sélectionne une date à partir du calendrier, il remplit cette date dans la zone de texte
  • Lorsque cela se produit, je veux déclencher une fonction javascript, mais l'événement «onchange» ne semble pas se produire.

J'aimerais idéalement ajouter l'événement en tant qu'attribut à la zone de texte, quelque chose comme:

txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2)); 

Merci d'avance

Plus d'informations: la date est entrée dans la zone de texte en c #. Le contrôle du calendrier comporte un gestionnaire d'événements sur la page. Lorsqu'une date est sélectionnée, le gestionnaire d'événements met la date dans la zone de texte. J'ai essayé de mettre l'accent sur la zone de texte à ce stade, puis de mettre un attribut onBlur sur la zone de texte, mais la zone de texte ne semble jamais se focaliser.

Je suppose que je pourrais appeler directement la fonction javascript en ce moment en faisant ClientScript.RegisterClientScriptBlock ou quelque chose comme ça, mais cela semble négligent et ne fonctionne jamais comme je le veux.

Vous interprétez mal ce que fait l'événement onchange lorsqu'il est appliqué à une zone de texte. Il ne tirera pas avant qu'il ne perde l'attention ou que vous puissiez entrer dans Entr. Pourquoi ne pas déclencher la fonction à partir d'un onchange sur la sélection qui remplit la zone de texte?

Consultez ici pour en savoir plus sur l'événement onchange: w3schools

C'est une question ancienne, et je ne sais pas si cela aidera, mais j'ai pu programmer un événement en utilisant:

 if (document.createEvent && ctrl.dispatchEvent) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", true, true); ctrl.dispatchEvent(evt); // for DOM-compliant browsers } else if (ctrl.fireEvent) { ctrl.fireEvent("onchange"); // for IE } 

Vous pouvez lancer l'événement simplement avec

 Document.getElementById ("elementID"). Onchange ();

Je ne sais pas si cela ne fonctionne pas sur certains navigateurs, mais cela devrait fonctionner sur FF 3 et IE 7+

Onchange n'est Onchange que lorsque l'utilisateur entre quelque chose par le clavier. Une entente de travail possible pourrait consister à concentrer d'abord le champ de texte et à le modifier.

Mais pourquoi ne pas récupérer l'événement lorsque l'utilisateur clique sur une date? Il existe déjà un javascript.

Vous êtes la population du côté du serveur. L'utilisation de registerclientscript placera le script au début du formulaire. Vous voudrez utiliser RegisterStartupScript (Block) pour que le script soit placé à la fin de la page en question.

Le premier tente d'exécuter le script avant que la zone de texte n'existe dans le dom, ce dernier exécutera le script après que cet élément de la page a été créé.

Vous pouvez essayer la bibliothèque d'Anthem .

Vous pouvez le placer dans une classe différente, puis appeler une fonction. Cela fonctionne quand ajax actualise

 $(document).on("change", ".inputQty", function(e) { //Call a function(input,input); }); 

Le «Onchange» n'est déclenché que lorsque l'attribut est modifié de façon programmée ou lorsque l'utilisateur change et se concentre sur le champ.

Avez-vous envisagé d'utiliser l'objet de calendrier de YUI? J'ai codé une solution qui met le calendrier yui dans un panneau yui et masque le panneau jusqu'à ce qu'une image associée soit cliquée. Je peux également voir des changements.

http://developer.yahoo.com/yui/examples/calendar/formtxt.html