Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery bootstraptogle如何防止更改事件_Jquery_Input - Fatal编程技术网

Jquery bootstraptogle如何防止更改事件

Jquery bootstraptogle如何防止更改事件,jquery,input,Jquery,Input,我在我的web应用程序中使用jquery插件bootstraptogle,在这里遇到了一个问题,我的代码如下所示 <input id="toggle-event" type="checkbox" data-toggle="toggle"> <script> $(function() { $('#toggle-event').change(function() { if (some condition) { $('

我在我的web应用程序中使用jquery插件bootstraptogle,在这里遇到了一个问题,我的代码如下所示

<input id="toggle-event" type="checkbox" data-toggle="toggle">
<script>
  $(function() {
    $('#toggle-event').change(function() {
       if (some condition) {
                 $('#console-event').bootstrapToggle('toggle');
       }
    })
  })
</script>
基本上我想做的是当一些人点击复选框,我会做一些检查,如果条件失败,我会切换复选框设置回来


这里的问题是在检查失败后,复选框向后切换,它再次触发更改事件,然后陷入死循环,如果条件失败,是否有方法防止更改事件触发?谢谢。

在复选框中添加一个单击处理程序,在那里签入并调用。这将防止复选框上发生默认操作,该复选框正在检查并触发更改事件

<input id="toggle-event" type="checkbox" data-toggle="toggle">
<script>
  $(function() {
    $('#toggle-event').on("click", function(e) {
       if (some condition) {
          e.preventDefault();
       }
    }).change(function() {
       $('#console-event').bootstrapToggle('toggle');
   })
</script>

注意数据样式=。。属性,以防止启动Bootstraptogle默认事件。

请提供更多详细信息,即您正在应用的条件。现在我可以告诉你,你可以使用e.preventDefault来停止事件传播。我尝试过使用click事件,但没有触发,似乎它没有传播到Bootstraptogle。我已经更新了我的评论,介绍了如何使用Bootstraptogle处理此问题。
<input id="toggle-event" type="checkbox" data-toggle="toggle" data-style="testtoggle">
$(document).on('click.bs.toggle', 'div.testtoggle', function(e) {
    e.stopImmediatePropagation()
    var $checkbox = $(this).sibling('input[type=checkbox]')
    if (some condition) {
            $checkbox.bootstrapToggle('toggle')
    }
})