2016-10-28 53 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线或警报,看看你的代码失败。