Вот еще одно решение, которое я разрабатываю для той же проблемы. Однако я использую много полей ввода, поэтому сохраняю старое значение как определяемый пользователем атрибут самих элементов: «data-value». Использование jQuery так легко управлять.
$(document).delegate('.filterBox', 'keyup', { self: this }, function (e) {
var self = e.data.self;
if (e.keyCode == 13) {
e.preventDefault();
$(this).attr('data-value', $(this).val());
self.filterBy(this, true)
}
else if (e.keyCode == 27) {
$(this).val('');
$(this).attr('data-value', '');
self.filterBy(this, true)
}
else {
if ($(this).attr('data-value') != $(this).val()) {
$(this).attr('data-value', $(this).val());
self.filterBy(this);
}
}
});
здесь, я использовал 5-6 полей ввода, имеет класс filterBox, я делаю метод filterBy, только если значение данных отличается от собственного значение.