У меня есть таблица HTML, которую я заполняю информацией из таблицы базы данных. Я сделал ячейки в таблице, редактируемой щелчком pon, и добавил jQuery, чтобы поймать, когда ячейка была отредактирована (через 2,5 секунды после последнего нажатия клавиши), ajax затем отправляет информацию в отдельный файл php для обновления таблицы базы данных с помощью измененное значение. Проблема, которую я обнаружил, заключается в том, что если ячейка нажата, чтобы перейти в другую ячейку, и произойдет изменение до того, как эти 2,5 секунды будут вставлены, первое изменение никогда не будет обновляться в базе данных.jQuery Изменение таймаута для улавливания щелчков
Мой вопрос: Есть ли способ, что я могу изменить мой код ниже, чтобы также захватить, если <td>
ячейка щелкнул из и послал Аяксу немедленно, чтобы сделать изменения в таблице базы данных, так что никаких изменений не пропустили ?
$('td').on('input', function() {
var _this = $(this); // preserve reference to the input field here
if(saveTimeout) clearTimeout(saveTimeout);
saveTimeout = setTimeout(function() {
console.log(_this)
$.ajax({
method: "POST",
url: "updatedatabase.php",
data: {
content: _this.text(),
date: _this.siblings().first().text(),
prod: $('tr:first-child th:nth-child(' + (_this.index() + 1) + ')').text(),
old: old
}
})
.done(function(msg) {
alert(msg);
});
}, 2500);
});
Почему не событие размытости поля, а не ввод поля. Таким образом, вы можете пропустить все 2.5-секундные проверки тайм-аута – dstarh
. Точка таймаута должна улавливаться, если кто-то не щелкнет в другую ячейку после редактирования. Возможно, они переключаются на другой экран или уходят со своего стола или что-то в этом роде. Был бы способ, которым я мог бы размывать поле и счетчик? – Brandon
Возможно, вы захотите удалить «2500 тайм-аут», после чего он будет работать только в тот момент, когда вы выходите, когда вы слушаете событие «вход» уже –