У меня есть функция autorefresh, которая вызывается, если флажок установлен и нажимается кнопка. Он автоматически обновляет таблицу из файла php с определенными переменными, привязанными к этой кнопке. Когда нажимается другая кнопка (с разными переменными, связанными с ней), автообновление должно останавливаться, то есть интервал должен быть очищен. Это, однако, я не могу работать, интервалы просто складываются - старый не очищается - хотя я пытаюсь вызвать функцию clearinterval в любом месте в моем коде.jQuery clearinterval не работает/не очищает интервал между всеми событиями
Это как мой файл состоит из:
$.ajaxSetup({
cache: false
});
var refreshId = null;
function stopinterval() {
clearInterval(refreshId);
return false;
}
$(document).ready(function() {
$("#button1").click(function(infralivefun) {
event.preventDefault(infralivefun);
var category_id = {};
category_id['datumanf'] = $("#datumanf").datepicker().val();
category_id['datumend'] = $("#datumend").datepicker().val();
$.ajax({
type: "POST",
url: "infratestomc.php?id=" + Math.random(),
dataType: "html",
data: category_id,
success: function(response) {
$("#resulttabelle").show().html(response);
}
});
if ($('#autorefcheck').is(':checked')) {
refreshId = setInterval(function() {
var category_id = {};
category_id['datumanf'] = $("#datumanf").datepicker().val();
category_id['datumend'] = $("#datumend").datepicker().val();
$.ajax({
type: "POST",
url: "infratestomc.php?id=" + Math.random(),
dataType: "html",
data: category_id,
success: function(response) {
$("#resulttabelle").show().html(response);
}
});
}, 5000);
}
//trying to call the stopinterval inside the button.Click event below
$('#button2').click(function() {
stopinterval();
});
$('#button3').click(function() {
stopinterval();
});
$('#autorefcheck').click(function() {
stopinterval();
});
}); //end of on.click(button)
//here I'm trying to call clearinterval outside of the button.click
$('#button2').click(function() {
stopinterval();
});
$('#button3').click(function() {
stopinterval();
});
$('#autorefcheck').click(function() {
stopinterval();
});
}); //end of document.ready
Представьте себе, что button2 и Button3 имеют аналогичные свинчиваний только с другими переменными, передаваемых в PHP. Я был бы очень рад, если бы кто-то мог указать мне в правильном направлении, как я могу просто очистить этот интервал, когда я нажимаю на что-то еще!
довольно растяпа ... – Vixed
Я не уверен, о том, почему он не работает, но вы считали, что произойдет, если пользователь щелкнет дважды на кнопку 1? Вы потеряете ссылку на предыдущий интервал и никогда не получите это обратно. – Aioros
Собственно, это может быть одной из причин вашей проблемы. Вы случайно вызываете тот же setInterval для других кнопок, не очищая его первым? – Aioros