INPUT要素でtype属性がhiddenの要素のvalue値に変更があったらchangeイベントを発火させる
<!DOCTYPE hrml> <head> <meta charset="utf-8"> <title></title> <body> <p> <form> <img id="img" src="" alt="写真" width="200" height="100"> <input type="hidden" name="hide" value=""> <input type="text" name="txt" value=""> </form> <script> //____________________________ { /*##################################################### input[type="hidden"]の要素の value値に変更があった場合 change イベントを発火させる #####################################################*/ const option = { attributes : true, attributeFilter : ['value'] }, handler = function ([mutation]) { let target = mutation.target, doc = target.ownerDocument, event = doc.createEvent ('HTMLEvents'); event.initEvent ('change', true, true); target.dispatchEvent (event); }; //_____________________________ class AddChangeEvent { constructor (element = null) { if (null === element) throw new Error ('要素がありません'); let observer = new MutationObserver (handler); observer.observe (element, option); this.observer = observer; } } //_____________________________ this.AddChangeEvent = AddChangeEvent; } let fm = document.querySelector ('form'), hide = fm.elements['hide']; //changeイベントは、form要素で監視する fm.addEventListener ('change', function (event) { let e = event.target; alert ([e.name, e.value]); }, false); //設定 new AddChangeEvent (hide); hide.value = "abc"; //イベント発火すればOK! </script>
うすうすは、感じていたさ。
type属性にhiddenなんかせず、display:none にすれば解決することを・・・