Merge branch 'main' of github.com:layui/layui
This commit is contained in:
commit
8033abc420
2
dist/layui.js
vendored
2
dist/layui.js
vendored
File diff suppressed because one or more lines are too long
@ -126,25 +126,71 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">搜索选择框</label>
|
<div class="layui-inline">
|
||||||
<div class="layui-input-inline">
|
<label class="layui-form-label">搜索选择框</label>
|
||||||
<select name="interest-search" lay-filter="interest-search" lay-search>
|
<div class="layui-input-block">
|
||||||
<option value="">请搜索</option>
|
<select name="interest-search" lay-filter="interest-search" lay-search>
|
||||||
<option value="写作">写作</option>
|
<option value="">请搜索</option>
|
||||||
<option value="阅读" disabled>阅读</option>
|
<option value="写作">写作</option>
|
||||||
<option value="游戏" disabled>游戏</option>
|
<option value="阅读" disabled>阅读</option>
|
||||||
<option value="音乐">音乐</option>
|
<option value="游戏" disabled>游戏</option>
|
||||||
<option value="旅行">旅行</option>
|
<option value="音乐">音乐</option>
|
||||||
<option value="读书">读书</option>
|
<option value="旅行">旅行</option>
|
||||||
<option value="1">layer</option>
|
<option value="读书">读书</option>
|
||||||
<option value="2" disabled>laydate</option>
|
<option value="1">layer</option>
|
||||||
<option value="3">3</option>
|
<option value="2" disabled>laydate</option>
|
||||||
<option value="4">layim</option>
|
<option value="3">3</option>
|
||||||
<option value="5">laypage</option>
|
<option value="4">layim</option>
|
||||||
<option value="6">6</option>
|
<option value="5">laypage</option>
|
||||||
<option value="7">7</option>
|
<option value="6">6</option>
|
||||||
<option value="8">8</option>
|
<option value="7">7</option>
|
||||||
</select>
|
<option value="8">8</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">搜索分组框</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="interest-search-group" lay-filter="interest-search-group" lay-search>
|
||||||
|
<option value="">请搜索</option>
|
||||||
|
<optgroup label="分组a">
|
||||||
|
<option value="a1">a1</option>
|
||||||
|
<option value="a2">a2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组aa">
|
||||||
|
<option value="aa1">aa1</option>
|
||||||
|
<option value="aa2">aa2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组b">
|
||||||
|
<option value="b1">b1</option>
|
||||||
|
<option value="b2">b2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组bb">
|
||||||
|
<option value="bb1">bb1</option>
|
||||||
|
<option value="bb2">bb2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组bbb">
|
||||||
|
<option value="bbb1">bbb1</option>
|
||||||
|
<option value="bbb2">bbb2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组c">
|
||||||
|
<option value="c1">c1</option>
|
||||||
|
<option value="c2">c2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组cc">
|
||||||
|
<option value="cc1">cc1</option>
|
||||||
|
<option value="cc2">cc2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组ccc">
|
||||||
|
<option value="ccc1">ccc1</option>
|
||||||
|
<option value="ccc2">ccc2</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup label="分组cccc">
|
||||||
|
<option value="cccc1">cccc1</option>
|
||||||
|
<option value="cccc2">cccc2</option>
|
||||||
|
</optgroup>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -302,7 +302,8 @@ layui.use(['table', 'dropdown'], function(){
|
|||||||
,{field: 'sign', title: '签名', width: 150}
|
,{field: 'sign', title: '签名', width: 150}
|
||||||
,{field: 'sex', title: '性别', width: 80}
|
,{field: 'sex', title: '性别', width: 80}
|
||||||
,{field: 'city', title: '城市', width: 100}
|
,{field: 'city', title: '城市', width: 100}
|
||||||
,{field: 'experience', title: '积分', width: 80, sort: true}
|
// ,{field: 'experience', title: '积分', width: 80, sort: true}
|
||||||
|
,{field: 'experience', title: '积分', width: 80, sort: true, totalRow: true, totalRowDecimalScale: 20}
|
||||||
]]
|
]]
|
||||||
,data: [{
|
,data: [{
|
||||||
"id": "10001"
|
"id": "10001"
|
||||||
@ -402,6 +403,7 @@ layui.use(['table', 'dropdown'], function(){
|
|||||||
,page: true //是否显示分页
|
,page: true //是否显示分页
|
||||||
,limits: [3,5,10]
|
,limits: [3,5,10]
|
||||||
,limit: 3 //每页默认显示的数量
|
,limit: 3 //每页默认显示的数量
|
||||||
|
,totalRow: true
|
||||||
//,loading: false //请求数据时,是否显示loading
|
//,loading: false //请求数据时,是否显示loading
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -860,11 +860,12 @@ a cite{font-style: normal; *cursor:pointer;}
|
|||||||
.layui-table-total tr,
|
.layui-table-total tr,
|
||||||
.layui-table-patch,
|
.layui-table-patch,
|
||||||
.layui-table-mend,
|
.layui-table-mend,
|
||||||
.layui-table[lay-even] tr:nth-child(even),
|
|
||||||
.layui-table tbody tr:hover,
|
.layui-table tbody tr:hover,
|
||||||
.layui-table-hover,
|
.layui-table-hover,
|
||||||
.layui-table-click{background-color: #FAFAFA;}
|
.layui-table-click{background-color: #FAFAFA;}
|
||||||
|
|
||||||
|
.layui-table[lay-even] tr:nth-child(even){background-color: #f2f2f2;}
|
||||||
|
|
||||||
.layui-table th,
|
.layui-table th,
|
||||||
.layui-table td,
|
.layui-table td,
|
||||||
.layui-table[lay-skin="line"],
|
.layui-table[lay-skin="line"],
|
||||||
|
15
src/layui.js
15
src/layui.js
@ -232,6 +232,21 @@
|
|||||||
return that;
|
return that;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Layui.prototype.unuse = function (apps) {
|
||||||
|
var that = this;
|
||||||
|
apps = that.isArray(apps) ? apps : [apps];
|
||||||
|
that.each(apps, function (index, item) {
|
||||||
|
if (!config.status[item]) {
|
||||||
|
return error('module ' + item + ' is not exist');
|
||||||
|
}
|
||||||
|
delete that[item];
|
||||||
|
delete modules[item];
|
||||||
|
delete that.modules[item];
|
||||||
|
delete config.status[item];
|
||||||
|
delete config.modules[item];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
//获取节点的 style 属性值
|
//获取节点的 style 属性值
|
||||||
Layui.prototype.getStyle = function(node, name){
|
Layui.prototype.getStyle = function(node, name){
|
||||||
var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);
|
var style = node.currentStyle ? node.currentStyle : win.getComputedStyle(node, null);
|
||||||
|
@ -145,19 +145,19 @@ layui.define('layer', function(exports){
|
|||||||
}())
|
}())
|
||||||
,items = {
|
,items = {
|
||||||
//输入框
|
//输入框
|
||||||
input: function(){
|
input: function(elem){
|
||||||
var inputs = elemForm.find('input,textarea');
|
var inputs = elem || elemForm.find('input,textarea');
|
||||||
|
|
||||||
//初始化全局的 autocomplete
|
//初始化全局的 autocomplete
|
||||||
options.autocomplete && inputs.attr('autocomplete', options.autocomplete);
|
options.autocomplete && inputs.attr('autocomplete', options.autocomplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
//下拉选择框
|
//下拉选择框
|
||||||
,select: function(){
|
,select: function(elem){
|
||||||
var TIPS = '请选择', CLASS = 'layui-form-select', TITLE = 'layui-select-title'
|
var TIPS = '请选择', CLASS = 'layui-form-select', TITLE = 'layui-select-title'
|
||||||
,NONE = 'layui-select-none', initValue = '', thatInput
|
,NONE = 'layui-select-none', initValue = '', thatInput
|
||||||
,selects = elemForm.find('select')
|
,selects = elem || elemForm.find('select')
|
||||||
|
|
||||||
//隐藏 select
|
//隐藏 select
|
||||||
,hide = function(e, clear){
|
,hide = function(e, clear){
|
||||||
if(!$(e.target).parent().hasClass(TITLE) || clear){
|
if(!$(e.target).parent().hasClass(TITLE) || clear){
|
||||||
@ -174,6 +174,7 @@ layui.define('layer', function(exports){
|
|||||||
,input = title.find('input')
|
,input = title.find('input')
|
||||||
,dl = reElem.find('dl')
|
,dl = reElem.find('dl')
|
||||||
,dds = dl.children('dd')
|
,dds = dl.children('dd')
|
||||||
|
,dts = dl.children('dt') // select分组dt元素
|
||||||
,index = this.selectedIndex //当前选中的索引
|
,index = this.selectedIndex //当前选中的索引
|
||||||
,nearElem; //select 组件当前选中的附近元素,用于辅助快捷键功能
|
,nearElem; //select 组件当前选中的附近元素,用于辅助快捷键功能
|
||||||
|
|
||||||
@ -187,6 +188,7 @@ layui.define('layer', function(exports){
|
|||||||
index = select[0].selectedIndex; //获取最新的 selectedIndex
|
index = select[0].selectedIndex; //获取最新的 selectedIndex
|
||||||
reElem.addClass(CLASS+'ed');
|
reElem.addClass(CLASS+'ed');
|
||||||
dds.removeClass(HIDE);
|
dds.removeClass(HIDE);
|
||||||
|
dts.removeClass(HIDE);
|
||||||
nearElem = null;
|
nearElem = null;
|
||||||
|
|
||||||
//初始选中样式
|
//初始选中样式
|
||||||
@ -347,6 +349,13 @@ layui.define('layer', function(exports){
|
|||||||
if(value === '' || (origin === 'blur') ? value !== text : not) num++;
|
if(value === '' || (origin === 'blur') ? value !== text : not) num++;
|
||||||
origin === 'keyup' && othis[not ? 'addClass' : 'removeClass'](HIDE);
|
origin === 'keyup' && othis[not ? 'addClass' : 'removeClass'](HIDE);
|
||||||
});
|
});
|
||||||
|
// 处理select分组元素
|
||||||
|
origin === 'keyup' && layui.each(dts, function(){
|
||||||
|
var othis = $(this)
|
||||||
|
,thisDds = othis.nextUntil('dt').filter('dd') // 当前分组下的dd元素
|
||||||
|
,allHide = thisDds.length == thisDds.filter('.' + HIDE).length; // 当前分组下所有dd元素都隐藏了
|
||||||
|
othis[allHide ? 'addClass' : 'removeClass'](HIDE);
|
||||||
|
});
|
||||||
var none = num === dds.length;
|
var none = num === dds.length;
|
||||||
return callback(none), none;
|
return callback(none), none;
|
||||||
};
|
};
|
||||||
@ -480,13 +489,13 @@ layui.define('layer', function(exports){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//复选框/开关
|
//复选框/开关
|
||||||
,checkbox: function(){
|
,checkbox: function(elem){
|
||||||
var CLASS = {
|
var CLASS = {
|
||||||
checkbox: ['layui-form-checkbox', 'layui-form-checked', 'checkbox']
|
checkbox: ['layui-form-checkbox', 'layui-form-checked', 'checkbox']
|
||||||
,_switch: ['layui-form-switch', 'layui-form-onswitch', 'switch']
|
,_switch: ['layui-form-switch', 'layui-form-onswitch', 'switch']
|
||||||
}
|
}
|
||||||
,checks = elemForm.find('input[type=checkbox]')
|
,checks = elem || elemForm.find('input[type=checkbox]')
|
||||||
|
|
||||||
,events = function(reElem, RE_CLASS){
|
,events = function(reElem, RE_CLASS){
|
||||||
var check = $(this);
|
var check = $(this);
|
||||||
|
|
||||||
@ -552,10 +561,10 @@ layui.define('layer', function(exports){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//单选框
|
//单选框
|
||||||
,radio: function(){
|
,radio: function(elem){
|
||||||
var CLASS = 'layui-form-radio', ICON = ['', '']
|
var CLASS = 'layui-form-radio', ICON = ['', '']
|
||||||
,radios = elemForm.find('input[type=radio]')
|
,radios = elem || elemForm.find('input[type=radio]')
|
||||||
|
|
||||||
,events = function(reElem){
|
,events = function(reElem){
|
||||||
var radio = $(this), ANIM = 'layui-anim-scaleSpring';
|
var radio = $(this), ANIM = 'layui-anim-scaleSpring';
|
||||||
|
|
||||||
@ -611,34 +620,58 @@ layui.define('layer', function(exports){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
type ? (
|
if (layui._typeof(type) === 'object') {
|
||||||
items[type] ? items[type]() : hint.error('不支持的 "'+ type + '" 表单渲染')
|
// jquery对象
|
||||||
) : layui.each(items, function(index, item){
|
type.each(function (index, item) {
|
||||||
item();
|
var elem = $(item);
|
||||||
});
|
if (!elem.closest(ELEM).length) {
|
||||||
|
// 如果不是存在layui-form中的直接跳过
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (item.tagName === 'SELECT') {
|
||||||
|
items['select'](elem);
|
||||||
|
} else if (item.tagName === 'INPUT') {
|
||||||
|
var itemType = item.type;
|
||||||
|
if (itemType === 'checkbox' || itemType === 'radio') {
|
||||||
|
items[itemType](elem);
|
||||||
|
} else {
|
||||||
|
items['input'](elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
type ? (
|
||||||
|
items[type] ? items[type]() : hint.error('不支持的 "'+ type + '" 表单渲染')
|
||||||
|
) : layui.each(items, function(index, item){
|
||||||
|
item();
|
||||||
|
});
|
||||||
|
}
|
||||||
return that;
|
return that;
|
||||||
};
|
};
|
||||||
|
|
||||||
//表单提交校验
|
// verifyElem: 要验证的节点或者范围 返回:验证通过返回true,否则返回false
|
||||||
var submit = function(){
|
Form.prototype.doVerify = function(verifyElem){
|
||||||
var stop = null //验证不通过状态
|
var stop = null //验证不通过状态
|
||||||
,verify = form.config.verify //验证规则
|
,verify = form.config.verify //验证规则
|
||||||
,DANGER = 'layui-form-danger' //警示样式
|
,DANGER = 'layui-form-danger' //警示样式
|
||||||
,field = {} //字段集合
|
|
||||||
,button = $(this) //当前触发的按钮
|
if (layui.type(verifyElem) !== 'object') { // 不符合要求的格式直接判通过
|
||||||
,elem = button.parents(ELEM).eq(0) //当前所在表单域
|
hint.error('doVerify: 参数错误');
|
||||||
,verifyElem = elem.find('*[lay-verify]') //获取需要校验的元素
|
return true;
|
||||||
,formElem = button.parents('form')[0] //获取当前所在的 form 元素,如果存在的话
|
}
|
||||||
,filter = button.attr('lay-filter'); //获取过滤器
|
if (!verifyElem.attr('lay-verify')) {
|
||||||
|
// 验证某个容器内的节点
|
||||||
|
verifyElem = verifyElem.find('*[lay-verify]');
|
||||||
|
}
|
||||||
|
|
||||||
//开始校验
|
//开始校验
|
||||||
layui.each(verifyElem, function(_, item){
|
layui.each(verifyElem, function(_, item){
|
||||||
var othis = $(this)
|
var othis = $(this)
|
||||||
,vers = othis.attr('lay-verify').split('|')
|
,verifyStr = othis.attr('lay-verify') || ''
|
||||||
,verType = othis.attr('lay-verType') //提示方式
|
,vers = verifyStr.split('|')
|
||||||
,value = othis.val();
|
,verType = othis.attr('lay-verType') //提示方式
|
||||||
|
,value = othis.val();
|
||||||
|
|
||||||
othis.removeClass(DANGER); //移除警示样式
|
othis.removeClass(DANGER); //移除警示样式
|
||||||
|
|
||||||
//遍历元素绑定的验证规则
|
//遍历元素绑定的验证规则
|
||||||
@ -687,7 +720,7 @@ layui.define('layer', function(exports){
|
|||||||
} else { //移动设备定位
|
} else { //移动设备定位
|
||||||
$dom.scrollTop(function(){
|
$dom.scrollTop(function(){
|
||||||
try {
|
try {
|
||||||
return (isForm2Elem ? othis.next() : othis).offset().top - 15
|
return (isForm2Elem ? othis.next() : othis).focus().offset().top - 15
|
||||||
} catch(e){
|
} catch(e){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -701,9 +734,22 @@ layui.define('layer', function(exports){
|
|||||||
});
|
});
|
||||||
if(stop) return stop;
|
if(stop) return stop;
|
||||||
});
|
});
|
||||||
|
|
||||||
if(stop) return false;
|
return !stop;
|
||||||
|
}
|
||||||
|
|
||||||
|
//表单提交校验
|
||||||
|
var submit = function(){
|
||||||
|
var field = {} //字段集合
|
||||||
|
,button = $(this) //当前触发的按钮
|
||||||
|
,elem = button.parents(ELEM).eq(0) //当前所在表单域
|
||||||
|
,verifyElem = elem.find('*[lay-verify]') //获取需要校验的元素
|
||||||
|
,formElem = button.parents('form')[0] //获取当前所在的 form 元素,如果存在的话
|
||||||
|
,filter = button.attr('lay-filter'); //获取过滤器
|
||||||
|
|
||||||
|
//开始校验
|
||||||
|
if(!form.doVerify(verifyElem)) return false;
|
||||||
|
|
||||||
//获取当前表单值
|
//获取当前表单值
|
||||||
field = form.getValue(null, elem);
|
field = form.getValue(null, elem);
|
||||||
|
|
||||||
|
@ -175,6 +175,8 @@
|
|||||||
if(obj.clickType === 'right'){
|
if(obj.clickType === 'right'){
|
||||||
top = winArea() - elemHeight - margin*2;
|
top = winArea() - elemHeight - margin*2;
|
||||||
if(top < 0) top = 0; //不能溢出窗口顶部
|
if(top < 0) top = 0; //不能溢出窗口顶部
|
||||||
|
} else {
|
||||||
|
top = margin; // 位置计算逻辑完备性处理
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,9 @@
|
|||||||
//外部调用
|
//外部调用
|
||||||
,laydate = {
|
,laydate = {
|
||||||
v: '5.3.1' //layDate 版本号
|
v: '5.3.1' //layDate 版本号
|
||||||
,config: {} //全局配置项
|
,config: {
|
||||||
|
weekStart: 0, // 默认周日一周的开始
|
||||||
|
} //全局配置项
|
||||||
,index: (window.laydate && window.laydate.v) ? 100000 : 0
|
,index: (window.laydate && window.laydate.v) ? 100000 : 0
|
||||||
,path: GLOBAL.laydate_dir || ready.getPath
|
,path: GLOBAL.laydate_dir || ready.getPath
|
||||||
|
|
||||||
@ -213,7 +215,16 @@
|
|||||||
|
|
||||||
//将日期格式转化成数组
|
//将日期格式转化成数组
|
||||||
that.format = thisModule.formatArr(options.format);
|
that.format = thisModule.formatArr(options.format);
|
||||||
|
|
||||||
|
// 设置了一周的开始是周几,此处做一个控制
|
||||||
|
if (options.weekStart) {
|
||||||
|
if (!/^[0-6]$/.test(options.weekStart)) {
|
||||||
|
var lang = that.lang();
|
||||||
|
options.weekStart = lang.weeks.indexOf(options.weekStart);
|
||||||
|
if (options.weekStart === -1) options.weekStart = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//生成正则表达式
|
//生成正则表达式
|
||||||
that.EXP_IF = '';
|
that.EXP_IF = '';
|
||||||
that.EXP_SPLIT = '';
|
that.EXP_SPLIT = '';
|
||||||
@ -415,7 +426,7 @@
|
|||||||
lay.each(new Array(7), function(j){
|
lay.each(new Array(7), function(j){
|
||||||
if(i === 0){
|
if(i === 0){
|
||||||
var th = lay.elem('th');
|
var th = lay.elem('th');
|
||||||
th.innerHTML = lang.weeks[j];
|
th.innerHTML = lang.weeks[(j + options.weekStart) % 7];
|
||||||
theadTr.appendChild(th);
|
theadTr.appendChild(th);
|
||||||
}
|
}
|
||||||
tr.insertCell(j);
|
tr.insertCell(j);
|
||||||
@ -845,8 +856,8 @@
|
|||||||
|
|
||||||
//计算当前月第一天的星期
|
//计算当前月第一天的星期
|
||||||
thisDate.setFullYear(dateTime.year, dateTime.month, 1);
|
thisDate.setFullYear(dateTime.year, dateTime.month, 1);
|
||||||
startWeek = thisDate.getDay();
|
startWeek = (thisDate.getDay() + (7 - options.weekStart)) % 7;
|
||||||
|
|
||||||
prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天
|
prevMaxDate = laydate.getEndDate(dateTime.month || 12, dateTime.year); //计算上个月的最后一天
|
||||||
thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天
|
thisMaxDate = laydate.getEndDate(dateTime.month + 1, dateTime.year); //计算当前月的最后一天
|
||||||
|
|
||||||
@ -1572,7 +1583,7 @@
|
|||||||
|
|
||||||
//是否输入框
|
//是否输入框
|
||||||
Class.prototype.isInput = function(elem){
|
Class.prototype.isInput = function(elem){
|
||||||
return /input|textarea/.test(elem.tagName.toLocaleLowerCase());
|
return /input|textarea/.test(elem.tagName.toLocaleLowerCase()) || /INPUT|TEXTAREA/.test(elem.tagName);
|
||||||
};
|
};
|
||||||
|
|
||||||
//绑定的元素事件处理
|
//绑定的元素事件处理
|
||||||
|
@ -53,6 +53,9 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
,reload: function(options, deep){
|
,reload: function(options, deep){
|
||||||
that.reload.call(that, options, deep);
|
that.reload.call(that, options, deep);
|
||||||
}
|
}
|
||||||
|
,reloadData: function(options, deep){
|
||||||
|
table.reloadData(id, options, deep);
|
||||||
|
}
|
||||||
,setColsWidth: function(){
|
,setColsWidth: function(){
|
||||||
that.setColsWidth.call(that);
|
that.setColsWidth.call(that);
|
||||||
}
|
}
|
||||||
@ -251,6 +254,7 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
,loading: true //请求数据时,是否显示 loading
|
,loading: true //请求数据时,是否显示 loading
|
||||||
,escape: true // 是否开启 HTML 编码功能,即转义 html 原文
|
,escape: true // 是否开启 HTML 编码功能,即转义 html 原文
|
||||||
,cellMinWidth: 60 //所有单元格默认最小宽度
|
,cellMinWidth: 60 //所有单元格默认最小宽度
|
||||||
|
,editTrigger: 'click' //单元格编辑的触发方式
|
||||||
,defaultToolbar: ['filter', 'exports', 'print'] //工具栏右侧图标
|
,defaultToolbar: ['filter', 'exports', 'print'] //工具栏右侧图标
|
||||||
,autoSort: true //是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)
|
,autoSort: true //是否前端自动排序。如果否,则需自主排序(通常为服务端处理好排序)
|
||||||
,text: {
|
,text: {
|
||||||
@ -394,39 +398,47 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
|
|
||||||
if(type === 'width') return options.clientWidth;
|
if(type === 'width') return options.clientWidth;
|
||||||
|
|
||||||
|
// 封装对col的配置处理
|
||||||
|
var initChildCols = function (i1, item1, i2, item2) {
|
||||||
|
//如果列参数为空,则移除
|
||||||
|
if (!item2) {
|
||||||
|
item1.splice(i2, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
item2.key = i1 + '-' + i2;
|
||||||
|
item2.hide = item2.hide || false;
|
||||||
|
item2.colspan = item2.colspan || 1;
|
||||||
|
item2.rowspan = item2.rowspan || 1;
|
||||||
|
|
||||||
|
//根据列类型,定制化参数
|
||||||
|
that.initOpts(item2);
|
||||||
|
|
||||||
|
//设置列的父列索引
|
||||||
|
//如果是组合列,则捕获对应的子列
|
||||||
|
var indexChild = i1 + (parseInt(item2.rowspan) || 1);
|
||||||
|
if (indexChild < options.cols.length) { // 只要不是最后一层都会有子列
|
||||||
|
item2.colGroup = true;
|
||||||
|
var childIndex = 0;
|
||||||
|
layui.each(options.cols[indexChild], function (i22, item22) {
|
||||||
|
//如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环
|
||||||
|
if (item22.HAS_PARENT || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;
|
||||||
|
|
||||||
|
item22.HAS_PARENT = true;
|
||||||
|
item22.parentKey = i1 + '-' + i2;
|
||||||
|
childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);
|
||||||
|
initChildCols(indexChild, options.cols[indexChild], i22, item22);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
item2.colGroup = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//初始化列参数
|
//初始化列参数
|
||||||
layui.each(options.cols, function(i1, item1){
|
layui.each(options.cols, function(i1, item1){
|
||||||
|
if (i1) return true;
|
||||||
layui.each(item1, function(i2, item2){
|
layui.each(item1, function(i2, item2){
|
||||||
item2.colspan = item2.colspan || 1;
|
initChildCols(i1, item1, i2, item2);
|
||||||
item2.rowspan = item2.rowspan || 1;
|
|
||||||
|
|
||||||
//如果列参数为空,则移除
|
|
||||||
if(!item2){
|
|
||||||
item1.splice(i2, 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
item2.key = i1 + '-' + i2;
|
|
||||||
item2.hide = item2.hide || false;
|
|
||||||
|
|
||||||
//设置列的父列索引
|
|
||||||
//如果是组合列,则捕获对应的子列
|
|
||||||
if(item2.colGroup || item2.colspan > 1){
|
|
||||||
var childIndex = 0;
|
|
||||||
layui.each(options.cols[i1 + item2.rowspan], function(i22, item22){
|
|
||||||
//如果子列已经被标注为{HAS_PARENT},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环
|
|
||||||
if(item22.HAS_PARENT || (childIndex >= 1 && childIndex == item2.colspan)) return;
|
|
||||||
|
|
||||||
item22.HAS_PARENT = true;
|
|
||||||
item22.parentKey = i1 + '-' + i2;
|
|
||||||
|
|
||||||
childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);
|
|
||||||
});
|
|
||||||
item2.colGroup = true; //标注是组合列
|
|
||||||
}
|
|
||||||
|
|
||||||
//根据列类型,定制化参数
|
|
||||||
that.initOpts(item2);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -686,7 +698,11 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
that.layMain.find('tbody').html('');
|
that.layMain.find('tbody').html('');
|
||||||
|
|
||||||
that.layMain.append(that.layNone = layNone);
|
that.layMain.append(that.layNone = layNone);
|
||||||
|
|
||||||
|
// 异常情况下对page和total的内容处理
|
||||||
|
that.layPage && that.layPage.addClass(HIDE).find('>div').html('');
|
||||||
|
that.layTotal && that.layTotal.addClass(HIDE).find('tbody').html('');
|
||||||
|
|
||||||
table.cache[that.key] = []; //格式化缓存数据
|
table.cache[that.key] = []; //格式化缓存数据
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -933,6 +949,7 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
//正常初始化数据渲染
|
//正常初始化数据渲染
|
||||||
render(); //渲染数据
|
render(); //渲染数据
|
||||||
that.renderTotal(data, totalRowData); //数据合计
|
that.renderTotal(data, totalRowData); //数据合计
|
||||||
|
that.layTotal && that.layTotal.removeClass(HIDE);
|
||||||
|
|
||||||
//同步分页状态
|
//同步分页状态
|
||||||
if(options.page){
|
if(options.page){
|
||||||
@ -991,8 +1008,13 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
|
|
||||||
//td 内容
|
//td 内容
|
||||||
var content = function(){
|
var content = function(){
|
||||||
|
if( item3.totalRowDecimalScale == null || isNaN(item3.totalRowDecimalScale) ||
|
||||||
|
item3.totalRowDecimalScale < 0 || item3.totalRowDecimalScale > 10 ){
|
||||||
|
// 如果检测到非法值就重设为2。至于非法值的定义这里是我自己定义的。
|
||||||
|
item3.totalRowDecimalScale = 2;
|
||||||
|
}
|
||||||
var text = item3.totalRowText || ''
|
var text = item3.totalRowText || ''
|
||||||
,thisTotalNum = parseFloat(totalNums[field]).toFixed(2)
|
,thisTotalNum = parseFloat(totalNums[field]).toFixed(item3.totalRowDecimalScale)
|
||||||
,tplData = {}
|
,tplData = {}
|
||||||
,getContent;
|
,getContent;
|
||||||
|
|
||||||
@ -1689,7 +1711,7 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
});
|
});
|
||||||
|
|
||||||
//单元格单击事件
|
//单元格单击事件
|
||||||
that.layBody.on('click', 'td', function(e){
|
that.layBody.on(options.editTrigger, 'td', function(e){
|
||||||
var othis = $(this)
|
var othis = $(this)
|
||||||
,field = othis.data('field')
|
,field = othis.data('field')
|
||||||
,editType = othis.data('edit')
|
,editType = othis.data('edit')
|
||||||
@ -1700,6 +1722,9 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
//显示编辑表单
|
//显示编辑表单
|
||||||
if(editType){
|
if(editType){
|
||||||
var input = $('<input class="layui-input '+ ELEM_EDIT +'">');
|
var input = $('<input class="layui-input '+ ELEM_EDIT +'">');
|
||||||
|
if(editType === 'textarea') {
|
||||||
|
input = $('<textarea class="layui-input ' + ELEM_EDIT + '"></textarea>');
|
||||||
|
}
|
||||||
input[0].value = othis.data('content') || elemCell.text();
|
input[0].value = othis.data('content') || elemCell.text();
|
||||||
othis.find('.'+ELEM_EDIT)[0] || othis.append(input);
|
othis.find('.'+ELEM_EDIT)[0] || othis.append(input);
|
||||||
input.focus();
|
input.focus();
|
||||||
@ -1722,7 +1747,7 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
|
|
||||||
if(hide){
|
if(hide){
|
||||||
othis.find('.layui-table-grid-down').remove();
|
othis.find('.layui-table-grid-down').remove();
|
||||||
} else if(elemCell.prop('scrollWidth') > elemCell.outerWidth()){
|
} else if(elemCell.prop('scrollWidth') > elemCell.outerWidth() || elemCell.find("br").size() > 0){
|
||||||
if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;
|
if(elemCell.find('.'+ ELEM_GRID_DOWN)[0]) return;
|
||||||
othis.append('<div class="'+ ELEM_GRID_DOWN +'"><i class="layui-icon layui-icon-down"></i></div>');
|
othis.append('<div class="'+ ELEM_GRID_DOWN +'"><i class="layui-icon layui-icon-down"></i></div>');
|
||||||
}
|
}
|
||||||
@ -1887,7 +1912,27 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
//记录所有实例
|
//记录所有实例
|
||||||
thisTable.that = {}; //记录所有实例对象
|
thisTable.that = {}; //记录所有实例对象
|
||||||
thisTable.config = {}; //记录所有实例配置项
|
thisTable.config = {}; //记录所有实例配置项
|
||||||
|
|
||||||
|
var eachChildCols = function (index, cols, i1, item2) {
|
||||||
|
//如果是组合列,则捕获对应的子列
|
||||||
|
if (item2.colGroup) {
|
||||||
|
var childIndex = 0;
|
||||||
|
index++;
|
||||||
|
item2.CHILD_COLS = [];
|
||||||
|
// 找到它的子列所在cols的下标
|
||||||
|
var i2 = i1 + (parseInt(item2.rowspan) || 1);
|
||||||
|
layui.each(cols[i2], function (i22, item22) {
|
||||||
|
//如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环
|
||||||
|
if (item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == (item2.colspan || 1))) return;
|
||||||
|
item22.PARENT_COL_INDEX = index;
|
||||||
|
|
||||||
|
item2.CHILD_COLS.push(item22);
|
||||||
|
childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);
|
||||||
|
eachChildCols(index, cols, i2, item22);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//遍历表头
|
//遍历表头
|
||||||
table.eachCols = function(id, callback, cols){
|
table.eachCols = function(id, callback, cols){
|
||||||
var config = thisTable.config[id] || {}
|
var config = thisTable.config[id] || {}
|
||||||
@ -1897,25 +1942,9 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
|
|
||||||
//重新整理表头结构
|
//重新整理表头结构
|
||||||
layui.each(cols, function(i1, item1){
|
layui.each(cols, function(i1, item1){
|
||||||
|
if (i1) return true; // 只需遍历第一层
|
||||||
layui.each(item1, function(i2, item2){
|
layui.each(item1, function(i2, item2){
|
||||||
|
eachChildCols(index, cols, i1, item2);
|
||||||
//如果是组合列,则捕获对应的子列
|
|
||||||
if(item2.colGroup){
|
|
||||||
var childIndex = 0;
|
|
||||||
index++
|
|
||||||
item2.CHILD_COLS = [];
|
|
||||||
|
|
||||||
layui.each(cols[i1 + item2.rowspan], function(i22, item22){
|
|
||||||
//如果子列已经被标注为{PARENT_COL_INDEX},或者子列累计 colspan 数等于父列定义的 colspan,则跳出当前子列循环
|
|
||||||
if(item22.PARENT_COL_INDEX || (childIndex >= 1 && childIndex == item2.colspan)) return;
|
|
||||||
|
|
||||||
item22.PARENT_COL_INDEX = index;
|
|
||||||
|
|
||||||
item2.CHILD_COLS.push(item22);
|
|
||||||
childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中
|
if(item2.PARENT_COL_INDEX) return; //如果是子列,则不进行追加,因为已经存储在父列中
|
||||||
arrs.push(item2)
|
arrs.push(item2)
|
||||||
});
|
});
|
||||||
@ -1970,8 +1999,6 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
|
|
||||||
//表格导出
|
//表格导出
|
||||||
table.exportFile = function(id, data, type){
|
table.exportFile = function(id, data, type){
|
||||||
var that = this;
|
|
||||||
|
|
||||||
data = data || table.clearCacheKey(table.cache[id]);
|
data = data || table.clearCacheKey(table.cache[id]);
|
||||||
type = type || 'csv';
|
type = type || 'csv';
|
||||||
|
|
||||||
@ -2011,8 +2038,8 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
}
|
}
|
||||||
|
|
||||||
var content = item1[item3.field]
|
var content = item1[item3.field]
|
||||||
,td = that.layBody.find('tr[data-index="'+ i1 +'"]>td');
|
,td = thatTable.layBody.find('tr[data-index="'+ i1 +'"]>td');
|
||||||
|
|
||||||
if(content === undefined || content === null) content = '';
|
if(content === undefined || content === null) content = '';
|
||||||
|
|
||||||
i1 == 0 && dataTitle.push(item3.title || '');
|
i1 == 0 && dataTitle.push(item3.title || '');
|
||||||
@ -2034,14 +2061,14 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
});
|
});
|
||||||
|
|
||||||
//表合计
|
//表合计
|
||||||
layui.each(that.dataTotal, function(key, value){
|
thatTable && layui.each(thatTable.dataTotal, function(key, value){
|
||||||
fieldsIsHide[key] || dataTotal.push(value);
|
fieldsIsHide[key] || dataTotal.push(value);
|
||||||
});
|
});
|
||||||
|
|
||||||
return dataTitle.join(',') + '\r\n' + dataMain.join('\r\n') + '\r\n' + dataTotal.join(',');
|
return dataTitle.join(',') + '\r\n' + dataMain.join('\r\n') + '\r\n' + dataTotal.join(',');
|
||||||
}());
|
}());
|
||||||
|
|
||||||
alink.download = (config.title || 'table_'+ (config.index || '')) + '.' + type;
|
alink.download = (config.title || 'table_'+ (config.index || new Date().getTime())) + '.' + type;
|
||||||
document.body.appendChild(alink);
|
document.body.appendChild(alink);
|
||||||
alink.click();
|
alink.click();
|
||||||
document.body.removeChild(alink);
|
document.body.removeChild(alink);
|
||||||
@ -2073,7 +2100,52 @@ layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function(exports){
|
|||||||
|
|
||||||
return thisTable.call(that);
|
return thisTable.call(that);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//需要重新render的参数名单
|
||||||
|
var dataParams = ['data', 'url', 'where', 'page', 'request', 'response', 'parseData'];
|
||||||
|
var dataParamsRegExp = new RegExp('^(' + dataParams.join('|') + ')$')
|
||||||
|
//重载数据 options只允许跟数据请求相关的配置信息
|
||||||
|
table.reloadData = function(id, options, deep){
|
||||||
|
var config = getThisTableConfig(id); //获取当前实例配置项
|
||||||
|
if (!config) return;
|
||||||
|
|
||||||
|
var that = thisTable.that[id];
|
||||||
|
options = options || {};
|
||||||
|
|
||||||
|
if (options.page !== undefined && !!options.page !== !!config.page) {
|
||||||
|
// 如果是否分页发生了改变
|
||||||
|
hint.error('reloadData不允许对是否分页进行切换(从不分页到分页的切换,反之亦然),如果需要请使用reload重载');
|
||||||
|
delete options.page;
|
||||||
|
}
|
||||||
|
//过滤options只留下跟数据请求相关的参数
|
||||||
|
layui.each(options, function (_key, _value) {
|
||||||
|
if (!dataParamsRegExp.test(_key)) {
|
||||||
|
delete options[_key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (options.page !== undefined) { // 针对page组件的特殊处理
|
||||||
|
if (typeof options.page === 'object') {
|
||||||
|
options.page.curr && (that.page = options.page.curr);
|
||||||
|
delete options.elem;
|
||||||
|
delete options.jump;
|
||||||
|
} else if (options.page) {
|
||||||
|
options.page = {};
|
||||||
|
}
|
||||||
|
$.extend(true, that.config, {page: options.page});
|
||||||
|
delete options.page;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.data && options.data.constructor === Array) delete that.config.data;
|
||||||
|
deep ? $.extend(true, that.config, options) : $.extend(that.config, options);
|
||||||
|
if (!that.config.page) {
|
||||||
|
that.page = 1;
|
||||||
|
}
|
||||||
|
that.loading();
|
||||||
|
that.pullData(that.page);
|
||||||
|
return thisTable.call(that);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//核心入口
|
//核心入口
|
||||||
table.render = function(options){
|
table.render = function(options){
|
||||||
var inst = new Class(options);
|
var inst = new Class(options);
|
||||||
|
@ -322,7 +322,62 @@ layui.define(['laytpl', 'form'], function(exports){
|
|||||||
});
|
});
|
||||||
return selectedData;
|
return selectedData;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//执行穿梭
|
||||||
|
Class.prototype.transfer = function (_index, elem) {
|
||||||
|
var that = this
|
||||||
|
,options = that.config
|
||||||
|
,thisBoxElem = that.layBox.eq(_index)
|
||||||
|
,arr = []
|
||||||
|
|
||||||
|
if (!elem) {
|
||||||
|
//通过按钮触发找到选中的进行移动
|
||||||
|
thisBoxElem.each(function(_index){
|
||||||
|
var othis = $(this)
|
||||||
|
,thisDataElem = othis.find('.'+ ELEM_DATA);
|
||||||
|
|
||||||
|
thisDataElem.children('li').each(function(){
|
||||||
|
var thisList = $(this)
|
||||||
|
,thisElemCheckbox = thisList.find('input[type="checkbox"]')
|
||||||
|
,isHide = thisElemCheckbox.data('hide');
|
||||||
|
|
||||||
|
if(thisElemCheckbox[0].checked && !isHide){
|
||||||
|
thisElemCheckbox[0].checked = false;
|
||||||
|
thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());
|
||||||
|
thisList.remove();
|
||||||
|
|
||||||
|
//记录当前穿梭的数据
|
||||||
|
arr.push(thisElemCheckbox[0].value);
|
||||||
|
}
|
||||||
|
|
||||||
|
that.setValue();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
//双击单条记录移动
|
||||||
|
var thisList = elem
|
||||||
|
,thisElemCheckbox = thisList.find('input[type="checkbox"]')
|
||||||
|
|
||||||
|
thisElemCheckbox[0].checked = false;
|
||||||
|
thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());
|
||||||
|
thisList.remove();
|
||||||
|
|
||||||
|
//记录当前穿梭的数据
|
||||||
|
arr.push(thisElemCheckbox[0].value);
|
||||||
|
|
||||||
|
that.setValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
that.renderCheckBtn();
|
||||||
|
|
||||||
|
//穿梭时,如果另外一个框正在搜索,则触发匹配
|
||||||
|
var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')
|
||||||
|
siblingInput.val() === '' || siblingInput.trigger('keyup');
|
||||||
|
|
||||||
|
//穿梭时的回调
|
||||||
|
options.onchange && options.onchange(that.getData(arr), _index);
|
||||||
|
}
|
||||||
|
|
||||||
//事件
|
//事件
|
||||||
Class.prototype.events = function(){
|
Class.prototype.events = function(){
|
||||||
var that = this
|
var that = this
|
||||||
@ -343,48 +398,31 @@ layui.define(['laytpl', 'form'], function(exports){
|
|||||||
this.checked = checked;
|
this.checked = checked;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
that.renderCheckBtn({stopNone: true});
|
setTimeout(function () {
|
||||||
|
that.renderCheckBtn({stopNone: true});
|
||||||
|
}, 0)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//双击记录
|
||||||
|
that.elem.on('dblclick', '.' + ELEM_DATA + '>li', function(event){
|
||||||
|
var elemThis = $(this)
|
||||||
|
,thisElemCheckbox = elemThis.children('input[type="checkbox"]')
|
||||||
|
,thisDataElem = elemThis.parent()
|
||||||
|
,thisBoxElem = thisDataElem.parent()
|
||||||
|
|
||||||
|
if(thisElemCheckbox[0].disabled) return;
|
||||||
|
|
||||||
|
that.transfer(thisBoxElem.data('index'), elemThis);
|
||||||
|
})
|
||||||
|
|
||||||
//按钮事件
|
//按钮事件
|
||||||
that.layBtn.on('click', function(){
|
that.layBtn.on('click', function(){
|
||||||
var othis = $(this)
|
var othis = $(this)
|
||||||
,_index = othis.data('index')
|
,_index = othis.data('index')
|
||||||
,thisBoxElem = that.layBox.eq(_index)
|
|
||||||
,arr = [];
|
|
||||||
if(othis.hasClass(DISABLED)) return;
|
if(othis.hasClass(DISABLED)) return;
|
||||||
|
|
||||||
that.layBox.eq(_index).each(function(_index){
|
that.transfer(_index);
|
||||||
var othis = $(this)
|
|
||||||
,thisDataElem = othis.find('.'+ ELEM_DATA);
|
|
||||||
|
|
||||||
thisDataElem.children('li').each(function(){
|
|
||||||
var thisList = $(this)
|
|
||||||
,thisElemCheckbox = thisList.find('input[type="checkbox"]')
|
|
||||||
,isHide = thisElemCheckbox.data('hide');
|
|
||||||
|
|
||||||
if(thisElemCheckbox[0].checked && !isHide){
|
|
||||||
thisElemCheckbox[0].checked = false;
|
|
||||||
thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_DATA).append(thisList.clone());
|
|
||||||
thisList.remove();
|
|
||||||
|
|
||||||
//记录当前穿梭的数据
|
|
||||||
arr.push(thisElemCheckbox[0].value);
|
|
||||||
}
|
|
||||||
|
|
||||||
that.setValue();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
that.renderCheckBtn();
|
|
||||||
|
|
||||||
//穿梭时,如果另外一个框正在搜索,则触发匹配
|
|
||||||
var siblingInput = thisBoxElem.siblings('.'+ ELEM_BOX).find('.'+ ELEM_SEARCH +' input')
|
|
||||||
siblingInput.val() === '' || siblingInput.trigger('keyup');
|
|
||||||
|
|
||||||
//穿梭时的回调
|
|
||||||
options.onchange && options.onchange(that.getData(arr), _index);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
//搜索
|
//搜索
|
||||||
|
Loading…
Reference in New Issue
Block a user