52

我将此代码用于复选框选中事件,但它不起作用。

css

<link href="assets/plugins/bootstrap-switch/static/stylesheets/bootstrap-switch-metro.css" rel="stylesheet" type="text/css" />

html

<div class="switch switch-mini" data-on-label="<i class='icon-sun icon-white'></i>" data-off-label="<i class='icon-sun muted'></i>">
    <input id="swWeather" type="checkbox" class="toggle" onclick="toggleWeather()" />
</div>

js

<script src="assets/plugins/bootstrap-switch/static/js/bootstrap-switch.js" type="text/javascript"></script>

如果我使用这种方式,只是视觉样式效果很好,但它不会触发toggleWeather()功能,但是如果我删除bootstrap-switch.js,所有视觉样式都会被删除,并且看起来像标准复选框一样标准,尽管它工作得很好。

如何更改复选框选中状态并使用引导开关单击它?

这是我的切换天气代码:

function toggleWeather() {

            if (document.getElementById('swWeather').checked)

            { weatherLayer.setMap(map); }

            else

            { weatherLayer.setMap(null); }

            if (document.getElementById('swCloud').checked)

            { cloudLayer.setMap(map); }

            else

            { cloudLayer.setMap(null); }
        }

顺便说一句,我将这些开关与这个主题一起使用:http: //www.keenthemes.com/preview/metronic_admin/form_component.html#myModal

这不是很好的例子,但就像 http://jsfiddle.net/UHkN6/

4

10 回答 10

100

注意:引导文档现在使用第二个示例。

对于 bootstrap-switch 3.0 候选版本,之前在官方页面上作为示例给出的事件是:

$('#switch-change').on('switchChange', function (e, data) {}); 

它不会被解雇!

解决方案 - 改用这个:

$('#switch-change').on('switchChange.bootstrapSwitch', function (event, state) {}); 

其中state参数是 的值checkbox

于 2014-03-19T07:35:37.260 回答
33

对我来说,这是唯一有效的代码(Bootstrap 3.0):

$('#my_checkbox').on('change.bootstrapSwitch', function(e) {
    console.log(e.target.checked);
});

它返回我是真还是

在引导开关更改时提交 Ajax 的示例:

$('#my_checkbox').on('change.bootstrapSwitch', function(e) {
    $.ajax({
        method: 'POST',
        url: '/uri/of/your/page',
        data: {
            'my_checkbox_value': e.target.checked
        },
        dataType: 'json',
        success: function(data){
            console.log(data);
        }
    });
});
于 2016-09-12T13:00:29.877 回答
11

这对我有用。

$(".switch").bootstrapSwitch({
        'size': 'mini',
        'onSwitchChange': function(event, state){
            console.log('switched...')
        },
        'AnotherName':'AnotherValue'
    });
于 2017-08-11T23:12:38.877 回答
9

你应该像下面这样调用 switch-change 函数

$('.switch').on('switch-change', function () {
    console.log("inside switchchange");
    toggleWeather();
});

如果您希望动态创建它,请按照我之前发布的链接中给出的步骤进行操作。[动态创建无线电引导开关]

这适用于无线电类型。对于复选框类型,您可以更改type='checkbox'.

您可以参考以下链接了解更多示例 - http://www.bootstrap-switch.org/

于 2013-10-25T08:42:09.310 回答
9

该文档提供了引导开关的事件。但这里有一个示例,它使用单个复选框以及一个单选组,只是为了完整性。我也抛出了 Disable 方法。

$('#TheCheckBox').on('switchChange.bootstrapSwitch', function () {
   $("#CheckBoxValue").text($('#TheCheckBox').bootstrapSwitch('state'));
});
于 2014-05-28T04:58:45.450 回答
2

试试这个对我有用

 $('#check').change(function (event) {
    var state = $(this).bootstrapSwitch('state');
    if (state) {
       // true
    } else {
       // false
    }
    event.preventDefault();
});
于 2015-09-01T19:19:51.703 回答
1

尝试这个

<input type="checkbox" name="my-checkbox" checked>

    $('input[name="my-checkbox"]').on('switchChange.bootstrapSwitch', function (event, state) 
        {
              if (state == true) 
               {
                 //your code
               }
               else
               {
                  //your code
               }
        });
于 2018-02-15T09:14:38.213 回答
1

这是我使用它的方式:

html :

<input name="field_name" class="switcher" type="checkbox" data-size="small" value="1">

查询

$('.switcher').on('switchChange.bootstrapSwitch', function(event, state) {
    if (state)
    {
        // Checked
    }else
    {
        // Is not checked
    }
});

我希望它有帮助!

于 2017-12-02T16:10:29.333 回答
0

这在使用 bootstrapSwitch 时有效

    $('body').on('switchChange.bootstrapSwitch','.switch',function () {
        alert('Done')
    });
于 2020-12-08T18:36:19.170 回答
0

它只是一个程式化的复选框。所以你可以像使用复选框一样使用它

document.addEventListener('change', function() {
    var chk = event.target
    if (chk.tagName === 'INPUT' && chk.type === 'checkbox') {
        console.log(chk.checked)
    }
})

这个例子是为开关的 2 个位置设计的,作为响应,你会得到真或假——取决于复选框的位置

于 2021-08-31T10:11:15.613 回答