Отключить двойной щелчок на событии jQuery AJAX
У меня есть кнопка нумерации страниц, которая запускает функцию Ajax для получения новых результатов на странице. Все работает нормально, единственное, что, если я дважды нажму на кнопку, я получу удвоенные результаты, потому что он делает 2 одинаковых вызова.
Я знаю, что есть много способов обойти эту вещь, но, похоже, ничего не работает полностью.
Теперь я использую переменную как флаг...
var isPaging = 0;
$('.container').on('click', '.bh-pagination-button', function(){
if (!isPaging) {
isPaging = 1;
callBehanceProjectsList();
isPaging = 0;
}
});
Кажется, работает, если я немного медленный, но если я очень быстро нажимаю два или три раза, он делает n-ые вызовы, все они идентичны.
Тогда я увидел, что есть и другие решения:
one();
unbind();
die();
etc...
Те, которые на самом деле могли бы работать, проблема в том, что после того, как я отключил событие click, я не могу снова включить его, и мне нужно много раз щелкать после окончания нумерации страниц.
Есть ли у вас какие-либо идеи?
Заранее спасибо.
2 ответа
Я также столкнулся с подобной проблемой. Мое решение _
$('#acceptButton').attr("disabled", true);
Вот acceptButton
это идентификатор кнопки.
Как насчет этого?
$('.container').on('click', '.bh-pagination-button', function() {
$(this).prop('disabled', true);
callBehanceProjectsList();
$(this).prop('disabled', false);
});
Таким образом, кнопка будет отключена непосредственно перед началом нумерации страниц и автоматически включится после ее окончания. Это предотвратит многократное нажатие на кнопку, поэтому необходимость в определенной переменной также будет устранена.
Я думаю, что вы должны использовать Jquery.BlockUI.Js.
Вот пример кода для этого,
$(document).ready(function() {
$("#Button3").click(function() {
console.log('d');
$.blockUI();
setTimeout(function() {
$.unblockUI({
onUnblock: function() {
//Write your unblock logic
alert('onUnblock');
}
});
}, 2000);
});
});
Вы даже можете разблокировать его после получения ответа от вызова ajax, это, кажется, лучшее решение для вашей ситуации.
Рабочая скрипка: http://jsfiddle.net/nwjsgxrp/