質問: 現在cakePHP3,PHP,jQuery,HTMLでアプリケーションを作っています。 前回も質問させていただいた続きです。 これを参考にさせていただき、以下のように実装しました。 --- $('form').on("change", function(event){ if(flg){ return false; } console.log(1); }); var flg ; $(/* リセットボタン */).on("click", function(event){ flg =true; // リセット処理 flg =false; $('form').trigger("change"); }) --- フラグの使い方はうまくいったのですが、 最後のtriggerイベントでchangeイベントを発火させると、何度もchangeイベントが発火してしまいます。 Formの変更がある分だけ発火するように思います。 これを1度だけ発火させる方法はないでしょうか? もしわかる方がいればよろしくお願いします。
回答: > > 最後のtriggerイベントでchangeイベントを発火させると、何度もchangeイベントが発火してしまいます。 > > > 「何度も」ってのが何回ぐらいなのかよくわかりませんが、以下に複数回changeイベントが発生する現象を開設してみます。 ``` $("form").on("change", function(){ ``` なので、「form部品の入力内容が変更されたとき」に常にイベントが発生します。 たとえば ``` text1: text2: ``` のようなhtml部に対して質問文のjavascriptを実行すると、 (1) text1に何かを入力してtext1からフォーカスが外れるタイミング(formの普通の振る舞い) (2) text2に何かを入力してtext2からフォーカスが外れるタイミング(formの普通の振る舞い) (3) リセットボタンを押したタイミング(javascriptで追加した振る舞い) の3つのタイミングでchangeイベントが実行されます。 仮に「text1に何か入力して、すぐにリセットボタンを押す」というオペレーションをやった場合、(1)と(3)が発生することになるのでchangeイベントは2回実行されます。