Как исправить скрипт?

Есть таблица.
У таблицы ячейки вида
<td contenteditable class="edit_cell" data-row="1'" data-column="'2'">Текст ячейки</td>

При нажатии на ячейку можно редактировать текст.
Если далее нажать на любое пустое место документа (не на другую ячейку), то скрипт ниже выполнится 1 раз. (1 алерт)
Но если далее нажать не на пустое место, а на другую ячейку , то скрипт ниже выполнится 1 раз для ячейки с которой мы ушли и огромное число раз (бесконечно) для ячейки на которую мы кликнули.

Как исправить скрипт?
Нужно, чтобы когда мы уходили с ячейки скрипт для неё выполнялся 1 раз. Пока это работает только для одной ячейки.

Внимание! Фидл глючит (как и написано выше будет куча алертов). Вам придется закрыть и заново открыть эту страницу.


$(document).on('blur', '.edit_cell', function(){
//$(document).on('click', '.edit_cell', function(){
let row = $(this).data("row");
let column = $(this).data("column");
let td_text = ($(this).html());

$.ajax({  
url:"update.php",  
method:"POST",  
data:{row:row, column:column, td_text:td_text},  
dataType:"text",  
success:function(data){  
alert(data);
}  
});	

	
});
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 2
Dier_Sergio_Great
@Dier_Sergio_Great
Увлеченный человек
Я ответа не знаю, но какая то строка в коде повторно инициализирует потерю фокуса.
let td_text = ($(this).html());
Предположим эта строка инициализирует потерю фокуса. Вам надо отсылать запросы отключая по очереди строки, чтобы узнать что именно вызывает повторно вызов функции.
Возможно Вам потребуется добавить флаг для каждой ячейки, если ячейка редактирована, то флаг включить, А потом при отправке запроса надо проверять наличие фалага, потом вынимать данные и потом отправлять запрос.
Ответ написан
Комментировать
logpol32
@logpol32 Автор вопроса
До конца не понял в чем дело, но задачу решил.
Мой алерт ("заглушка") в Фидл постоянно выполняется. А вот реальный запрос похоже что выполняется 1 раз.
По крайней мере никаких багов, загрузки сервера я не заметил.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы