@ObehanProger

Как заблокировать нажатие кнопки пока не завершится функция?

Есть ajax функция с анонимным колбэком:
$.post(
    "/admin/send_image",
    {dataURL:dataURL,imgData:tmpImgData,imgId:input_file_id},
    function (result)
      {
         imgData.setAttribute('value',result);
      }
);

и есть кнопка btn. Как сделать, чтобы эта кнопка не нажималась (не срабатывала от нажатий пользователя) пока callback-функция не завершит работу?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
dollar
@dollar
if (is_blocked) return; //Кнопка не нажимается.
is_blocked = true; // <------------- Здесь заблокировать.
//button.className = 'button_disabled';
$.post(
    "/admin/send_image",
    {dataURL:dataURL, imgData:tmpImgData, imgId:input_file_id},
    function(result)
    {
        imgData.setAttribute('value', result);
    },
).always(function() {
    is_blocked = false; // <------------------- Здесь разблокировать.
    //button.className = 'button_enabled';
});

Как именно заблокировать, зависит от того, что за кнопка и как она устроена. Что касается javascript, то удобно завести статичную переменную - то есть либо глобальную, либо привязать её к кнопке, и менять при нажатии. Если она изменена (true/flase), то кнопка железно не работает. Ну и попутно менять внешний вид этой кнопки в нужные моменты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
22 сент. 2019, в 10:34
10 руб./за проект
22 сент. 2019, в 09:39
3500 руб./за проект