2 votes

Existe-t-il une fonction comme onChange qui écoutera également un changement par JavaScript ?

Lorsque j'utilise onChange(), il ne se déclenche que lorsque l'utilisateur modifie quelque chose dans un champ de saisie. Je veux qu'il se déclenche même lorsque JavaScript modifie quelque chose dans un champ de saisie. Comment puis-je réaliser cela ?

1voto

Rahul Dwivedi Points 113

Vous pouvez ajouter un écouteur d'événements.

  document.getElementById("fooId").addEventListener("change", func);
    function func(e){
     alert(e.target.value)
    }

<input type="text" id="fooId"/>

1voto

Mostafa Ahmed Points 494

Vous devez ajouter EventListener() method

1voto

Mise à jour :

Ainsi, l'utilisateur https://www.webdeveloper.com/u/Sempervivum m'a aidé et a trouvé ce script originalement posté par Shawn Regan ici : détecter un changement de valeur dans une balise d'entrée avec vanilla javascript et MutationObserver qui fait exactement ce que je recherchais. Vous pouvez trouver une démo fonctionnelle ici : https://jsfiddle.net/zyx54/hdn4txry/ Ce script ici :

let registered = [];
let setDetectChangeHandler = function(field) {
  if (!registered.includes(field)) {
    let superProps = Object.getPrototypeOf(field);
    let superSet = Object.getOwnPropertyDescriptor(superProps, "value").set;
    let superGet = Object.getOwnPropertyDescriptor(superProps, "value").get;
    let newProps = {
      get: function() {
        return superGet.apply(this, arguments);
      },
      set: function (t) {
        let _this = this;
        setTimeout( function() { _this.dispatchEvent(new Event("change")); }, 50);
        return superSet.apply(this, arguments);
      }
    };
    Object.defineProperty(field, "value", newProps);
    registered.push(field);
  }
}

0voto

aviboy2006 Points 5768

Cette façon d'ajouter l'eventlistner à l'entrée.

var sampleFunction = function(values){
  document.getElementById("sample").value = "New text";
} 

var input = document.getElementById("sample");

input.addEventListener('change', (event) => { 

  console.log("afafaf");
});

<div>
 <input type="text" id="sample" onchange="sampleFunction(this.value)"/>

</div>

<span id="changetext" ></span>

0voto

jojitoon Points 121

Ceci devrait aider. https://www.w3schools.com/jsref/event_onchange.asp Si vous avez des besoins plus spécifiques, partagez-les avec nous.

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