最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于layui的table插件進(jìn)行復(fù)選框聯(lián)動功能的實現(xiàn)方法

 更新時間:2019年09月19日 16:25:08   作者:weixin_42853424  
今天小編就為大家分享一篇基于layui的table插件進(jìn)行復(fù)選框聯(lián)動功能的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

實際項目功能:

給員工賬號進(jìn)行分配權(quán)限(增加權(quán)限,修改權(quán)限)

實現(xiàn)思路:

用表格展示權(quán)限列表–>勾選分配該賬號的權(quán)限–>調(diào)用接口

出現(xiàn)的問題:

因為某些權(quán)限之間是有關(guān)聯(lián)的,比如: “ 查看材料 ” 和 “ 修改材料 ” ,這兩個權(quán)限是有聯(lián)系的,當(dāng)你勾選 “ 修改材料 ” 權(quán)限的時候,那么, “ 查看材料 ” 權(quán)限也要勾選上,當(dāng)你取消勾選 “ 查看材料 ”權(quán)限的時候,“ 修改材料 ” 權(quán)限也要取消。

所以當(dāng)用戶勾選某個權(quán)限的時候,我們要通過js代碼去判斷是否有和這個權(quán)限相關(guān)的權(quán)限,如果有,就需要通過js代碼自動勾選或取消勾選。

而layui的table插件沒有提供通過js代碼自動勾選或取消勾選復(fù)選框的方法;

解決方案:

通過table的reload方法和form的render方法實現(xiàn)

思路:

//以查看材料和修改材料權(quán)限為例:查看材料的id為2,修改材料的id為3
//用戶點擊復(fù)選框時,觸發(fā)的回調(diào)函數(shù)
table.on('checkbox(quanXianAll)', function(obj) {
 //判斷是否是全選
 if (obj.type === "one") {
   //判斷判斷選中的權(quán)限是否為“修改材料”
   if (obj.data.id === 3) {
    //判斷是否選中狀態(tài)
    if (obj.checked) {
     tableIns.reload({
      data:data,
      done: function (res) {
       //根據(jù)“查看材料”權(quán)限的id獲取的索引
       var n = res.data.findIndex(function (item, i) {
        if (item.id === 2) {
         return true
        }
       })
       //判斷查看材料”權(quán)限是否已被勾選
       if(!res.data[n].LAY_CHECKED){
        res.data[n].LAY_CHECKED = true;
        $(".layui-table-body").find("tr[data-index=" + n + "]").find('input[name="layTableCheckbox"]').prop("checked", true);
        form.render('checkbox');
       }

      }
     })
    }
   }
  }
})

這種關(guān)聯(lián)肯定不止一個,所以我們要把代碼進(jìn)行封裝。(思路應(yīng)該說明白了,代碼就不再進(jìn)行這里封裝了)

在table的源文件中添加一個這樣的方法

在table源碼中的a.elem.on("click", 'input[name="layTableCheckbox"]+', function () {}方法內(nèi),添加以下方法

var mylaysetCheck= function (index,checked,callbacks) {
 var e=t("table[lay-filter="+f+"]").next().find(".layui-table-box").find(".layui-table-main").find("tr[data-index="+index+"]"),
  l = e.parents("tr").eq(0).data("index"), n = e[0].checked,
  o = "layTableAllChoose" === e.attr("lay-filter");

 e.find('input[name="layTableCheckbox"]').prop("checked",checked);
 if(callbacks){
  this.setCheckData(index, checked), this.syncCheckAll();a.renderForm("checkbox");
  layui.event.call(this, s, "checkbox(" + f + ")", {
   checked: n,
   data: d.cache[a.key] ? d.cache[a.key][l] || {} : {},
   type: o ? "all" : "one",
   mysetCheck:mylaysetCheck.bind(a)
  })
 }else {
  this.setCheckData(index, checked), this.syncCheckAll();a.renderForm("checkbox");

 }
};

在table源碼中

a.elem.on("click", 'input[name="layTableCheckbox"]+', function () {}方法內(nèi)有一個layui.event.call()函數(shù)===> 源碼為:

layui.event.call(this, s, "checkbox(" + f + ")", {
 checked: n,
 data: d.cache[a.key] ? d.cache[a.key][l] || {} : {},
 type: o ? "all" : "one"
})

改為:

layui.event.call(this, s, "checkbox(" + f + ")", {
 checked: n,
 data: d.cache[a.key] ? d.cache[a.key][l] || {} : {},
 type: o ? "all" : "one",
 mysetCheck:mylaysetCheck.bind(a)
})

通過以下代碼調(diào)用

//用戶點擊復(fù)選框時,觸發(fā)的回調(diào)函數(shù)
table.on('checkbox(test)', function(obj){
 //兩個參數(shù),第一個是數(shù)組的索引,第二個是是否勾選,第三個是否使用回調(diào)函數(shù)
 obj.mysetCheck(index,checked,callbacks);
});

//案例:查看材料的id為2,索引為2;修改材料的id為3,索引為3
table.on('checkbox(quanXianAll)', function(obj){
 if(obj.data.id===3&&obj.checked){
  obj.mysetCheck(2,true,true);
 }
 if(obj.data.id===2&&!obj.checked){
  obj.mysetCheck(3,false,true);
 }

});
//這樣就可以實現(xiàn):勾選“修改材料”時也會把“查看材料”勾選上,取消勾選“查看材料”時也會取消“修改材料”的勾選

對比:

第一種方法不用修改源碼,但代碼量多,且不是局部刷新;

第二種方法是局部刷新,代碼不多,但是修改源碼,設(shè)計到版本遷移的問題,且業(yè)務(wù)邏輯錯誤,容易發(fā)生無限循環(huán);

以上這篇基于layui的table插件進(jìn)行復(fù)選框聯(lián)動功能的實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • xtree.js 代碼

    xtree.js 代碼

    xtree.js 代碼...
    2007-03-03
  • JS中常見的6種繼承方式總結(jié)

    JS中常見的6種繼承方式總結(jié)

    繼承是面向?qū)ο笕筇卣髦?可以使得子類具有父類的屬性和方法,同時還可以在子類中重新定義以及追加屬性和方法,本文為大家整理了JS中常見的6種繼承方式,希望對大家有所幫助
    2023-08-08
  • 微信小程序wepy框架學(xué)習(xí)和使用心得詳解

    微信小程序wepy框架學(xué)習(xí)和使用心得詳解

    這篇文章主要介紹了微信小程序wepy框架學(xué)習(xí)和使用心得詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 在Koa.js中實現(xiàn)文件上傳的接口功能

    在Koa.js中實現(xiàn)文件上傳的接口功能

    這篇文章主要介紹了在Koa.js中實現(xiàn)文件上傳的接口功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • JavaScript獲取flash對象與網(wǎng)上的有所不同

    JavaScript獲取flash對象與網(wǎng)上的有所不同

    關(guān)于js獲取flash對象,網(wǎng)上有非常多的例子,但不是我想要的,經(jīng)測試整理,因此本文誕生了
    2014-04-04
  • 討論html與javascript在瀏覽器中的加載順序問題

    討論html與javascript在瀏覽器中的加載順序問題

    這篇文章主要是對html與javascript在瀏覽器中的加載順序問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 深入淺出ES6之let和const命令

    深入淺出ES6之let和const命令

    這篇文章主要介紹了ES6中l(wèi)et和const命令的相關(guān)資料,非常不錯,具有參考借鑒價值,對es6 let const相關(guān)知識感興趣的朋友一起看下吧
    2016-08-08
  • JavaScript獲取一個范圍內(nèi)日期的方法

    JavaScript獲取一個范圍內(nèi)日期的方法

    這篇文章主要介紹了JavaScript獲取一個范圍內(nèi)日期的方法,涉及javascript操作日期的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • JS獲取地址欄參數(shù)的兩種方法(簡單實用)

    JS獲取地址欄參數(shù)的兩種方法(簡單實用)

    這篇文章主要介紹了JS獲取地址欄參數(shù)的兩種方法(簡單實用),小編給大家推薦使用第一種采用正則表達(dá)式獲取地址欄參數(shù)的方法,此方法簡單實用,對js獲取地址欄參數(shù)相關(guān)知識感興趣的朋友,一起學(xué)習(xí)吧
    2016-06-06
  • 解決layer.prompt無效的問題

    解決layer.prompt無效的問題

    今天小編就為大家分享一篇解決layer.prompt無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評論

岐山县| 宜州市| 思茅市| 东乡| 临夏县| 新兴县| 石景山区| 滨海县| 志丹县| 黔南| 广东省| 宁德市| 泗水县| 青海省| 阜城县| 四子王旗| 鹰潭市| 阿城市| 项城市| 舞阳县| 嘉善县| 沭阳县| 敖汉旗| 彭水| 井研县| 延安市| 兴文县| 西宁市| 北海市| 漠河县| 石阡县| 阿城市| 灌阳县| 兴隆县| 乌兰县| 临桂县| 乾安县| 浠水县| 航空| 滨州市| 兴仁县|