私はHTMLテーブルを持っており、データベーステーブルから情報を入力しています。私は編集可能な表のセルをポンクリックにして、セル編集が完了した時点で(最後のキーを押すと2.5秒後に)jQueryを追加して、別のPHPファイルに情報を送信してデータベーステーブルを更新します変更された値。私が見つけた問題は、セルが別のセルに入るためにクリックされ、2.5秒前に変更が加えられた場合、最初の変更は決してデータベースに更新されないということです。jQueryタイムアウトがクリックアウトをキャッチするように変更する
、私の質問は:は、私は<td>
セルが外にクリックして変更が見落とされていないように、データベーステーブルの変更を行うために、すぐにAJAXに送信された場合も、キャプチャするために、以下の私のコードを変更することができます任意の方法はあります?
$('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 timeout'を削除したい場合は、' input'イベントを既に聞いているときにクリックした瞬間にすべてのキーストロークを捕捉するタイムアウトなしで –