во время ajax запроса блокировать остальные

Если пользователь жмет на поле (которое отслеживается на клик) 10 раз, то ajax запрос начинает выполняться и еще 9 таких же становятся в очередь и поочередно выполняются. как сделать чтобы эта очередь не создавалась во время выполнения первого?

Везде говорят менять css на дизейбл,но css во время запроса не меняется вообще никакое

var orderBy;
var sortBy;

$(document).on('click', "[sort]", function(){
// event.stopPropagation(); 
$('*').css("background-color: rgb(0, 0, 0)");
var poisk = document.getElementById('searchGost').value;   
var page = document.getElementById('curPage').name; 
orderBy = $(this).attr("id");

if ($(this).attr("sort") === 'ASC'){
    sortBy = 'DESC';
}
else sortBy = 'ASC';

$(this).attr("sort", sortBy);   

       $.ajax({
        async: false,
        type: "POST",
        url: "script/search.ajax.php",     
        data: {poisk: poisk,page: page,orderBy: orderBy, sortBy: sortBy},
        success: function (result) {
     $("#searchGostResult").html(result);    
       },
        complete: function () {
   $("#"+orderBy).attr("sort", sortBy);  
     }
    });

});

Ответы (2 шт):

Автор решения: doox911

// Получаем ссылку на лемент
const input = document.querySelector('.my-input');

// Выполняется ли запрос
let isAjax = false;

// Добавляем выполнение функции по клику на элементе
input.addEventListener('click', clickOnInput);

// Эмулируем Ajax зфпрос
function ajaxRequestEmulation(time = 3000) {
  // Устанавливаем флаг выполнения запроса
  isAjax = true;
  
  setTimeout(() => {
    // Как получим ответ от сервера (выполнится запрос)
    // И скажем, что мы готовы выполнить ещё запросы
    isAjax = false;
   }, time);
}


function clickOnInput(event) {
  // Если сейчас нет запроса..
  if (!isAjax) {
    console.log('Send a request..');
    ajaxRequestEmulation();
  } else {
    console.log('Sorry, but now I am fulfilling the request.');
  }
}
<input type="text" class="my-input">

→ Ссылка
Автор решения: Vadim

Вот:

let tf = false; // выполняется сейчас

const clickInput=()=>{
    if(tf === true)return false; // если выполняется, кыш
    tf = true; // меняешь на "выполняется"
    let r = $.ajax({
        url: `https://google.com/`,
        type: 'GET',
        async: true,
        success: (r)=>{
            tf = false; // меняешь взад
            return r;
        },
        error: (e)=>{
            console.log(e.status, e.responseText);
            tf = false; // меняешь взад (на ошибке)
            return false;
        }
    });
};

___ (Сначала только на тайтл посмотрел и написал below)

Заблокировать на время нельзя, заблокировать "навсегда" можно(таким промышляют блокираторы рекламы), но скоро тоже будет нельзя

Но, ты можешь попробовать сделать запрос с async: false

let r = $.ajax({
    url: `https://google.com/`,
    type: 'GET',
    async: false,
    success: (r)=>{
        return r;
    },
    error: (e)=>{
        console.log(e.status, e.responseText);
        return false;
    }
});
console.log(r);
→ Ссылка