こんにちは、2 秒のタイムアウト後に onchange イベントまたは oninput をトリガーする Save 関数があります。問題は、このシナリオで Save 関数が 2 回トリガーされることです。
- 何かを入力
- 2秒待つ
- oninput が保存イベントを発生させる
- 入力からクリック
- onchange で保存イベントが発生する
最初に何が起こるかに応じて、一度だけ保存する必要があります。ユーザーが何かを入力してすぐに入力を終了した場合は、onchange を介して保存し、oninput タイムアウトをキャンセルする必要があります。ただし、何かを入力して 2 秒待機すると、oninput と onchange を介して保存する必要はありません。
シンプルでクリーンなソリューションが必要です。それは存在しますか?ありがとう :)
編集:ここに私のコードがありますhttp://jsfiddle.net/TQ9KR/
jQuery('#text').on('change', function() {
save();
});
jQuery('#text').on('input', function(){
clearTimeout(this.delayer);
var context = this;
this.delayer = setTimeout(function () {
jQuery(context).trigger('change');
}, 2000);
});
function save(){
jQuery('#a').text('saved on ' + new Date().getTime());
}