1. 程式人生 > >如何使Bootstrap-Switch在條件成立的時候才改變狀態

如何使Bootstrap-Switch在條件成立的時候才改變狀態

事情的起因源於下邊這張原型圖,emmmm即使用者點選定時開機開關的時候,傳送請求去設定定時。如果成功,那開關就改變狀態,反之開關狀態不改變。

然後網上參考了一下這篇文章文章連結,然後在switchChange函式中寫入瞭如下程式碼:

$('#power_on').bootstrapSwitch('onSwitchChange',function (e,state) {
    $(this).bootstrapSwitch('setState',!state,true);
})

然後抱著試試看的心態,執行程式碼之後,switch開關依然滑動的很順暢,好像我的程式碼白寫了一樣,看了一下控制檯,果不其然,報錯了。。。

遇到問題,解決問題,網上搜索一番之後,找到了這篇博文文章連結,哦~ 原來沒有setState這玩意兒,遂改之

$('#power_on').bootstrapSwitch('onSwitchChange',function (e,state) {
    $(this).bootstrapSwitch('state',!state,true);
})

然後就是見證奇蹟的時刻,哼,switch開關滑不動了,it works.接著就是要讓它根據某種狀態然後滑動到相反的狀態了,參考第一篇文章,程式碼下加了一句話.

$('#power_on').bootstrapSwitch('onSwitchChange',function (e,state) {
    $(this).bootstrapSwitch('state',!state,true);
    //禁用開關
    $(this).bootstrapSwitch('setActive', false);
})

emmmm,然後就又出錯了

啊,你是魔鬼嗎???接著又是一番搜尋之後,找到了下邊這篇文章文章連結,於是乎,測試的程式碼就又成了下邊這個樣子

$('#power_on').bootstrapSwitch('onSwitchChange',function (e,state) {
    $(this).bootstrapSwitch('state',!state,true);
    //2s之後改變switch狀態
    setTimeout(function () {
        $('#power_on').bootstrapSwitch('toggleState',true);
        $('#power_on').bootstrapSwitch('state',state);
    },2000);
})

執行以上程式碼,點選switch,2s之後狀態改變,然後測試完畢,這可真是一次讓人開心的程式設計之旅啊(並不).