現在cakePHP3,PHP,jQuery,HTMLでアプリケーションを作っています。
画面にはリセットボタン、複数のチェックボックス、複数のセレクトボックスがあります。
リセットボタン押下ですべての項目が「選択なし」の状態になります。
そのリセットボタンの処理は共通のjavascriptで行われており、順番に状態が「選択なし」になっていきます。
その都度その都度で、項目を変更した際に走る「changeイベント」が走ってしまいます。
この「changeイベント」が何度も走ることを防ぐことはできますでしょうか?
どのタイミングでchangeイベントを走らせるようにするかはわからないのですが、
リセットボタンを押したときは、changeイベントの処理が一度だけ走るようにしたいのです。
そのようなことを実現できる方法がありましたら、教えていただきたいです。お願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ソースコードを示せる範囲で示さないと回答を得にくいと思います。
とりあえず、こういうケースで多いのが、イベントハンドラの中でイベントハンドラを登録してしまうものです。
javascript
1$(function() { 2 $('#myButton').change(function() { 3 console.log('year !'); 4 }); 5});
と書けば、$('#myButton')
の change
イベントに対するハンドラは document.ready
のタイミングで一度登録されるだけですが、
javascript
1$(window).on('orientationchange', function() { 2 $('#myButton').change(function() { 3 console.log('year !'); 4 }); 5});
とか書いちゃうと、スマホやタブレットを回転させるたびに change
イベントのハンドラが追加されていってしまいます。
投稿2016/03/29 13:42
総合スコア2468
0
ベストアンサー
input type="reset"
や、JavaScriptの処理では change
イベントは発生しないとおもいます
(Chrome 以外は未確認)
たぶんリセットボタンの JavaScript の処理の中にイベントを発生させる処理があるのかとおもいます
jQuery だと trigger
をそれぞれの input の変更のたびによんでいないでしょうか?
呼んでいるならその処理をやめて、リセットの処理の最後に、一度だけやりたい処理を呼び出せば良いと思います
投稿2016/03/29 13:17
総合スコア633
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 21:48

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 13:44
2016/03/29 13:57
2016/03/29 14:07
2016/03/29 14:16
2016/03/29 14:23 編集
2016/03/29 14:33 編集
2016/03/29 21:21 編集
2016/03/29 14:51
2016/03/29 15:24
2016/03/29 21:25
2016/03/29 22:03