Останавливает setInterval в первый раз при нажатии второй кнопки - PullRequest
0 голосов
/ 23 января 2020

Когда я нажимаю кнопку, setInterval будет работать. Если я хочу остановить команду setInterval при первом нажатии кнопки и позволить второй кнопке работать в setInterval, как и раньше. Что мне делать? Проблема сейчас в том, когда нажимаешь первую кнопку. И нажмите вторую кнопку, чтобы работать одновременно.

$("button").click(function() {
  var date = new Date();
  var time = date.toLocaleTimeString();
  var obj_name = $(this).attr('name');
  if (obj_name != undefined) {
  
    setInterval(function() {
      var date = new Date();
      var time = date.toLocaleTimeString();
      $.ajax({
        url: 'insert.php',
        method: 'POSt',
        data: {
          obj_name: obj_name,
          time: time
        }
      });
    }, 1000);
    
    $.ajax({
      url: 'insert.php',
      method: 'POSt',
      data: {
        obj_name: obj_name,
        time: time
      }
    });
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <button type="submit" name="sub-register">Register</button>
  <button name="cancel">Cancel</button>
</div>

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Что вы можете сделать, это использовать clearInterval. Позвольте мне привести простой пример для вас.

<div>
    <button type="submit" id="RegisterButton" name="sub-register">Register</button>
    <button name="cancel" id="CancelButton">Cancel</button>
</div>

<script>
    var timer;
    $("#RegisterButton").on("click", function() {
       timer = setInterval(function() {
           //AJAX CALL
       },1000);
    });

    $("#CancelButton").on("click", function() {
      clearInterval(timer);
    });
</script>

при нажатии на кнопку регистрации он запускает интервал, а при нажатии на кнопку отмены он очищает интервал и таймер останавливается.

удачи и веселья.

0 голосов
/ 23 января 2020

Сохраните setInterval в глобальном атрибуте, например:

var globalInterval = setInterval(function() {
   var date = new Date();
   var time = date.toLocaleTimeString();
   ....
   ....
}, 1000);

И затем вы можете отменить интервал с помощью clearInterval(globalInterval)

Но почему бы Вы разделяете события click на две отдельные функции ?, кнопка submit вызовет setInterval и сохранит ее в глобальной переменной, а cancel очистит ее, я думаю, это облегчит вам написать функциональность.

Если вы решите придерживаться своего решения, вы можете установить Интервал внутри

if (obj_name != undefined) и очистить его с помощью оператора else.

...