Как сохранять изменения в форме не чаще n секунд?

Здравствуй, Тостер!
Есть список форм, в которых нужно отслеживать изменения и выполнять какое-то действие для каждой формы не чаще 2 секунд.

Как думал решить задачу: создать хеш, ключами которого являются указатели на форму, а значения - объекты, в которых проводится проверка на запущенный таймер и необходимое действие по его истечению.

Написал код, но что-то не реагирует.
$(".editable").on('input keyup', function(e){
		link_to_obj = this
		if (!articles.hasOwnProperty(this)){
			articles[this] = {

				obj: $(link_to_obj),

				has_changes: false,

				timer_started: false,

				save_changes: function(){
					alert(this.obj.text())
				},

				start_timer: function(){
					setTimeout(this.check_changes(), 2000);
				},

				check_changes: function(){
					this.timer_started = false;
					this.check_update();
				},

				check_update: function(){
					if (!this.timer_started && this.has_changes){
						this.save_changes();
						this.has_changes = false;
						this.start_timer();
						this.timer_started = true;
					}else if(this.timer_started){
						this.has_changes = true;
					}
				},

				update: function(){
					this.has_changes = true;
					this.check_update();
				}

			}
		}

		articles[this].update()
	});


var articles = []
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
$('#myForm').on('change', function(){
  // ...
})

Не подойдет?

если последнее изменение было менее двух секунд назад, то он не должен ничего делать до завершения таймера.
В этом поможет throttle
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы