Ich habe eine HTML-Tabelle, die ich mit Informationen aus einer Datenbanktabelle auffüllen. Ich habe die Zellen in der Tabelle nach dem Klick editierbar gemacht und jQuery hinzugefügt, um nach Beendigung der Bearbeitung der Zelle zu fangen (2,5 sec nach dem letzten Tastendruck), dann sendet ajax info an eine separate php-Datei, um die Datenbanktabelle mit den geänderten zu aktualisieren Wert. Ein Problem, das ich gefunden habe, ist, dass, wenn die Zelle angeklickt wird, um in eine andere Zelle zu gehen, und eine Änderung vor diesen 2,5 Sekunden vorgenommen wird, die erste Änderung niemals in die Datenbank aktualisiert wird.jQuery, verwenden Sie mehr als einen Ereignisauslöser?
Meine Frage ist: Wenn ich auf ein Feld Unschärfe Ereignis statt ändern würde, ist es eine Möglichkeit, dass ich immer noch den Timer übernehmen könnte, so dass Ajax erreicht, wenn entweder das Feld Unschärfe oder das Timeout erreicht werden?
$('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);
});
Ja. Sie können einen Timer für die Tastenkombination verwenden und eine Unschärfe für die Zelle verwenden. Stattdessen würde ich wahrscheinlich ein "keyup" -Ereignis an der Eingabe in dem Feld machen, das zuerst das Zeitlimit abbricht und dann ein Zeitlimit mit einer Funktion darin ausführt. Fügen Sie dann ein Unschärfungs-Ereignis zum Feld hinzu, um die gleiche Funktion auszuführen wie vom 'keyup' gemacht. – ntgCleaner