解決layui擴(kuò)展select -- formselects (使用的formSelects-v4)本地?cái)?shù)據(jù)過濾(查詢)后全選,勾選了全部的問題
這個(gè)問題是layui通病bug,網(wǎng)上搜索了也沒找到解決的辦法,最后經(jīng)過自己的不斷摸索,終于搗鼓出來的解決辦法
下面的操作都在? layui.use...里面進(jìn)行的,
var formSelects =layui.formSelects;
formSelects.btns('product', ['select','remove'], {show:'name'});
// 在這里調(diào)用自定義的處理方法
// 自定義處理方法(解決搜索后點(diǎn)擊全選bug問題)-路徑在res/js/common_form.js
cumHandle('product',formSelects); // 這是自定義的方法(抽離出來方便引用,也可以放獨(dú)立的js供全局引用)
// 搜索多選-處理的函數(shù) selectName為xm-select的值,formSelects為 layui.formSelects對(duì)象;
function cumHandle(selectName, formSelects) {
var isSearchVal =false;
// 解決搜索后多選會(huì)選全部數(shù)據(jù)的問題
? formSelects.filter(selectName,function(id,inputVal,val) {
// 如果搜索文案存在時(shí)
? if (val.name.indexOf(inputVal) != -1) {
val.isHidden =false;// 是否隱藏
? ? isSearchVal =true;// 記錄是否是過濾得到的值
? ? return false;
}
val.isHidden =true;// 記錄被過濾的(隱藏標(biāo)識(shí))
? return true;// 返回true,不會(huì)顯示
? })
formSelects.on(selectName,function (id,vals,val){
// 如果是隱藏的并且isSearchVal=true時(shí),return false阻止選中
? if (val.isHidden &&isSearchVal)return false;
})
formSelects.opened(selectName,function() {
// select打開時(shí),設(shè)置isSearchVal為false,此時(shí)選中不作限制
? isSearchVal =false;
})
}
直接上圖:

看看我這塊leyui頁面的寫法(搜索過濾是通過本地搜索,并非遠(yuǎn)程搜索),上圖:
