2016-10-28 84 views
0

這是我的問題。如何將onclick事件綁定到更改事件的複選框INSTEAD?

我正在爲某些設備製作控制面板。現在用戶可以啓用/切換開/關切換(複選框),遠程設備也可以啓用/切換。這反映在數據庫中。 但是,每當用戶(而不是設備)切換啓用設備(複選框==選中)時,我也想要一個確認框。當用戶禁用時,不需要確認框(切換,複選框== false)設備。 我每隔幾秒鐘檢查一次數據庫以查看設備的狀態(因爲設備可以開啓或關閉)

這是我迄今爲止(它不能正常工作,沒有任何內容被髮送到數據庫。點擊doees不會觸發用戶點擊複選框)

$(function() { 
    $('#toggle').bootstrapToggle({ 
     on: TR_Toggle_On, 
     off: TR_Toggle_Off 
    }); 
    check_enable(); 

    function check_enable() { 
     var timer = setInterval(function(result) { 
      $.ajax({ 
       type: "get", 
       url: "checkState.php", 
       success: function(result) { 
        var enabled =parseInt(result); 
        if (enabled ===1) { 
         $('#toggle').bootstrapToggle('on'); 
        } else { 
         $('#toggle').bootstrapToggle('off'); 
        } 
       } 
      }); 
     }, 5000); 
    } 

    $('#toggle').on('click',function(){ 
     $('#toggle').change(function() { 
      if ($('#toggle').prop('checked') ===true) { 
       if(confirm("Sure?")){ 
        $.ajax({ 
        type: "get", 
        url: "setEnable.php", 
        data: "enable=1" 
        }); 
       }else{ 
        $('#toggle').prop('checked',false); 
       } 
      } else { 
       $.ajax({ 
        type: "get", 
        url: "setEnable.php", 
        data: "enable=0" 
       }); 
      } 
     }) 
    }) 


}) 

我該怎麼做?當我嘗試註冊on('click',func(){})事件時,什麼都不會觸發。我認爲它不適用於複選框?我究竟做錯了什麼?

回答

0

你的另一事件中綁定的事件..

$('#toggle').on('click',function(){ 
    $('#toggle').change(function() { 
    ... 
    } 
} 

您應該只綁定一次,就像這樣......

$('#toggle').on('click',function(){ 
     if ($('#toggle').prop('checked') ===true) { 
      if(confirm("Sure?")){ 
       $.ajax({ 
       type: "get", 
       url: "setEnable.php", 
       data: "enable=1" 
       }); 
      }else{ 
       $('#toggle').prop('checked',false); 
      } 
     } else { 
      $.ajax({ 
       type: "get", 
       url: "setEnable.php", 
       data: "enable=0" 
      }); 
     } 
    } 
0

是的,它適用於複選框。

嘗試小例子是這樣的:

<input type="checkbox" class="toggle" name="dog" value="TinyDog" /> what does the dog say 

$(document).ready(function() { 
$('.toggle').on('click',function(){ 
    alert("woff woff"); 
    }); 
}); 

嘗試加入一些的console.log線或警報,看看你的代碼失敗。