Come posso triggersre manualmente un evento onchange?

Sto impostando un valore di campo di testo data-ora tramite un widget di calendario. Ovviamente, il widget del calendario fa qualcosa del genere:

document.getElementById('datetimetext').value = date_value; 

Quello che voglio è: Cambiando il valore nel campo di testo data-ora ho bisogno di resettare alcuni altri campi nella pagina. Ho aggiunto un listener di eventi onchange al campo datetesto che non viene triggersto, perché suppongo che onchange venga triggersto solo quando l’elemento diventa attivo e il suo valore viene modificato in caso di perdita di concentrazione.

Quindi sto cercando un modo per triggersre manualmente questo evento onchange (che immagino dovrebbe occuparsi di controllare la differenza di valore nel campo di testo).

Qualche idea ?

Ci sono un paio di modi in cui puoi farlo. Se il listener onchange è una funzione impostata tramite la proprietà element.onchange e non si è preoccupati dell’object evento o della propagazione / propagazione, il metodo più semplice è chiamare semplicemente tale funzione:

 element.onchange(); 

Se è necessario per simulare l’evento reale per intero o se si imposta l’evento tramite l’attributo html o addEventListener / attachEvent , è necessario eseguire un po ‘di rilevamento delle funzionalità per triggersre correttamente l’evento:

 if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); element.dispatchEvent(evt); } else element.fireEvent("onchange"); 

MDN suggerisce che c’è un modo molto più pulito di farlo nei browser moderni:

 // Assuming we're listening for eg a 'change' event on `element` // Create a new 'change' event var event = new Event('change'); // Dispatch it. element.dispatchEvent(event); 

Per chi usa jQuery c’è un metodo conveniente: http://api.jquery.com/change/