У меня есть два поля ввода, и я добавил тот же обработчик события key up, который вызывает запрос ajax. Я хочу выполнить некоторый фрагмент (включить текстовое поле) для события «complete», но они не работают независимо.
<input type="text" name="ele1" id="ele1">
<input type="text" name="ele2" id="ele2">
$(function() {
let ele1 = $('#ele1');
let ele2 = $('#ele2');
$("#ele1, #ele2").on('keyup', resourceChange);
function resourceChange(e) {
$this = $(this);
$this.prop('disabled', true);
$.ajax({
url: "test_upload.php",
type: "POST",
cache: false,
processData: false,
contentType: false,
dataType: 'json',
complete: function(xhr) {
response = xhr.responseJSON;
$this.prop('disabled', false);
}
});
}
});
для целей тестирования, я вручную добавляю задержку в 5 секунд.
<?php
// test_upload.php
sleep(5);
$response = [
'success' => true,
'name' => 'test_name'
];
header('Content-Type: application/json');
echo json_encode($response);
Проблема: Когда я набираю символ в первом текстовом поле, он будет отключен на следующие пять секунд (обратный отсчет запуска). Но если я наберу во втором текстовом поле до завершения этих 5 секунд (скажем, через 3 секунды), то первое текстовое поле никогда не включается. Осталось отключить. и второе текстовое поле активируется после оставшихся секунд от 5 секунд. (5 - 3 = 2 секунды)