bootstrap switch事件

使用bootstrap switch控件,怎么在改变状态时弹出确认框,点击确定后再更改switch的状态?官方提供的事件方法不能做到啊?不知还有什么办法?

阅读 12.2k
4 个回答

好吧,可以填坑了。隔了好久,早上再次看了一下官方的文档,下面有句话

The method state can receive an optional third parameter skip. if true, switchChange event is not executed. The default is false.

可以通过第三个参数来决定是否要执行switchChange事件。通过绑定事件switchChange.bootstrapSwitch, 然后在该事件中调用方法,比如self.bootstrapSwtich('state', !state, true)。这样便可不会改变switch的值,当用户点击确定完成后续操作以后可通过方法bootstrapSwtich('toggleState')去改变switch的状态值。当然其中还要区分是用户点击按钮去改变的switch的值还是在代码中去改变switch的值,可通过一个标记变量来区分。

新手上路,请多包涵

@asmall 麻烦能具体点吗,看不大懂。
我现在有个情况事,后台返回数据显示状态,然后要点击按钮跳出提示框是否改变状态,确定之后后台数据更改,且改变按钮状态

// 设置开关事件

    $(".update_tips").on('switch-change', function (e, data) {

        // 取反
        $(this).bootstrapSwitch('setState', !data.value, true);// 这里注意第三个参数,如果不设置为true,则会陷入死循环,反复调用switch-change事件
        
        // 禁用
        $(this).bootstrapSwitch('setActive', false);
        
        // ajax请求
        $.ajax({
            type: "POST",
            url: url,
            data: {'game_id':game_id},
            dataType: "json",
            context: $(this),
            success: function(data) {
                        
                        $(this).bootstrapSwitch('setActive', true);// 解禁
                        
                        if (data.success) {
                            $(this).bootstrapSwitch('setState', data.data.status, true);// 这里注意第三个参数,如果不设置为true,则会陷入死循环,反复调用switch-change事件
                        } else {
                            alert(data.message);
                        }
                        
                        
                    }
        });
        
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题