У меня есть вызов ajax, который запускается после события ввода onkeyup. После ввода 8 номеров он выполняет вызов.
Если вызов был успешным, он добавляет новую строку в таблицу.
Проблема в том, что он добавляет 2 строки. Звонок ajax, если стреляют дважды. Если у меня запущен отладчик, он добавляет только 1 строку. Если есть предупреждение о добавлении строки, добавляется только 1 строка. Если у меня нет отладчика или предупреждения, добавляется 2. Не уверен, почему.
Ввод:
<input style="width:100px" type="text" id="account0" maxlength="8" onkeyup="getAccount(this);" />
Функция addrow запускается дважды (если я не отлаживаю или не добавляю всплывающее окно). Функция addrow не содержит циклов, просто добавляет строку в таблицу HTML. Переменная i остается одинаковой для обоих вызовов, она не увеличивается:
function getAccount(val) {
var account = val.value;
if (account.length == 8) {
var i = parseInt(val.id.replace("account", ""));
$.ajax({
type: "GET",
url: "/123/AccountSelect?account=" + account,
dataType: 'json',
ContentType: "application/json, charset=UTF-8",
success: function (data) {
//create new row for next account if needed
addRow(i + 1, data);
},
error: function (xhr, status, error) {
showModal(xhr.status + ": " + xhr.statusText);
}
});
}
}
Опять же, это происходит только в том случае, если не работает отладчик (конечно) или нет всплывающего окна, прерывающего поток.