2016-12-03 13 views
0

6秒ごとに「valvonta」を呼び出すjQueryコードがあります。しかし、ラジオボタンの値が変わると、valvonta()はまったく動作しません。 6秒後ではなく直ちに実行する必要があります。ラジオボタン値が変更されたときのjQueryと関数の呼び出し

コードを変更するにはどうすればよいですか?助けてくれてありがとう。

$(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!'); 
    }); 
}); 

答えて

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!'); 
    }); 
}); 
+0

このようになりますか? setInterval(valvonta()、6000); – xms

+1

いいえ、そうしてはいけません。 – mplungjan

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!'); 
    }); 
}); 
+0

ラジオボタンの値が変わるとすぐに "valvonta"が実行されないようです。 – xms

+0

HTMLが変更される前にわずかな遅延がありますが、それはサーバーへの要求のためです。どのくらい速く結果を返すかによって決まります。しかし、「警戒」は即時になるだろう。 – trincot

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!'); 
    }); 
}); 
+0

これはなぜより良い方法ですか? – xms

+0

更新 – mplungjan

+0

を参照してください。アラートを使用しない場合は、setIntervalを使用しても問題ありませんか? – xms

関連する問題