jQuery并在radiobutton值更改时调用函数

时间:2016-12-03 16:37:26

标签: jquery

我有一些jQuery代码调用" valvonta"每6秒钟一次。但是当radiobutton值发生变化时,valvonta()根本不起作用。它应该立即执行,而不是在6秒后执行。

我应该如何修改我的代码?谢谢你的帮助。

$(document).ready(function(){
  valvonta = setInterval(function() {
    var kaavio = 38;

    jQuery.post("hae_tilanteet.php", {
      kaavio: kaavio
    }).done(function(data) {
      $('#valvonta').html(data);
    });
  }, 6000);

  $('#kaaviotaulukko').change(function(){
    valvonta(); // this does not work
    alert('Radio Box has been changed!');
  });
});

3 个答案:

答案 0 :(得分:0)

您尚未正确定义该功能。

$(document).ready(function(){
  valvonta = function() {
    var kaavio = 38;

    jQuery.post("hae_tilanteet.php", {
      kaavio: kaavio
    }).done(function(data) {
      $('#valvonta').html(data);
    });
  };

  //Pass the function reference to be executed after 6 sec
  setInterval(valvonta,6000);

  $('#kaaviotaulukko').change(function(){
    valvonta(); // this does not work
    alert('Radio Box has been changed!');
  });
});

答案 1 :(得分:0)

valvonta不是一个函数,而是一个标识间隔的唯一ID。

而是将您的函数命名为,而不是返回值:

$(document).ready(function(){
  setInterval(function valvonta() {  // <---- this changed.
    var kaavio = 38;

    jQuery.post("hae_tilanteet.php", {
      kaavio: kaavio
    }).done(function(data) {
      $('#valvonta').html(data);
    });
  }, 6000);

  $('#kaaviotaulukko').change(function(){
    valvonta(); // this does not work
    alert('Radio Box has been changed!');
  });
});

答案 2 :(得分:0)

使用setInterval和AJAX不是一个好主意。 如果服务器没有响应,则每6秒钟一次。 而是执行此操作,仅在服务器返回时重新加载。 您甚至可以更改成功,因此只有在成功重新加载时才会重试。

var tId, 
    valvonta = function() {
      clearTimeout(tId); // in case there is one running 
      var kaavio = 38;
      $.post("hae_tilanteet.php", {
        kaavio: kaavio
      }).done(function(data) {
        $('#valvonta').html(data);
        tId = setTimeout(valvonta,6000);
      });
    };

$(function(){
  //Pass the function reference to be executed after 6 sec
  tId = setTimeout(valvonta,6000);

  $('#kaaviotaulukko').on("click",function(){
    valvonta(); 
    // never alert in a page with timeout/interval - it blocks
    console.log('Radio Box has been changed!'); 
  });
});