diff --git a/docs/flow/detail/options.md b/docs/flow/detail/options.md
index 5b245da2..efe46477 100644
--- a/docs/flow/detail/options.md
+++ b/docs/flow/detail/options.md
@@ -50,6 +50,20 @@
`true`
+
+
+
+moreText |
+
+
+设置「加载更多」按钮的文本
+
+ |
+string |
+
+
+加载更多
+
|
diff --git a/docs/table/examples/editModes.md b/docs/table/examples/editModes.md
index 5e6c23fd..bab78337 100644
--- a/docs/table/examples/editModes.md
+++ b/docs/table/examples/editModes.md
@@ -77,13 +77,17 @@ layui.use(function(){
// 原生 select 事件
var tableViewElem = this.elem.next();
- tableViewElem.find('.select-demo-primary').on('change', function(){
+
+ // 解除 tbSelect 命名空间下的所有 change 事件处理程序
+ tableViewElem.off("change.tbSelect");
+ // 将 '.select-demo-primary' 元素的 change 事件委托给 tableViewElem, 事件命名空间为 tbSelect
+ tableViewElem.on("change.tbSelect", ".select-demo-primary", function () {
var value = this.value; // 获取选中项 value
var data = table.getRowData(options.id, this); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
-
+
// 更新数据中对应的字段
data.city = value;
-
+
// 显示 - 仅用于演示
layer.msg('选中值: '+ value +'
当前行数据:'+ JSON.stringify(data));
});
diff --git a/src/modules/flow.js b/src/modules/flow.js
index 4824306a..6128e27d 100644
--- a/src/modules/flow.js
+++ b/src/modules/flow.js
@@ -19,6 +19,7 @@ layui.define('jquery', function(exports){
var scrollElem = $(options.scrollElem || document); // 滚动条所在元素
var threshold = 'mb' in options ? options.mb : 50; // 临界距离
var isAuto = 'isAuto' in options ? options.isAuto : true; // 否自动滚动加载
+ var moreText = options.moreText || "加载更多"; // 手动加载时,加载更多按钮文案
var end = options.end || '没有更多了'; // “末页”显示文案
var direction = options.direction || 'bottom';
var isTop = direction === 'top';
@@ -30,7 +31,7 @@ layui.define('jquery', function(exports){
var notDocument = options.scrollElem && options.scrollElem !== document;
//加载更多
- var ELEM_TEXT = '加载更多'
+ var ELEM_TEXT = '' + moreText + ''
,more = $('');
if(!elem.find('.layui-flow-more')[0]){
diff --git a/src/modules/form.js b/src/modules/form.js
index 3f8586bc..2e3074e9 100644
--- a/src/modules/form.js
+++ b/src/modules/form.js
@@ -534,50 +534,27 @@ layui.define(['lay', 'layer', 'util'], function(exports){
}
// 标注 dd 的选中状态
- var setThisDd = function(prevNext, thisElem1){
- var nearDd, cacheNearElem
+ var setThisDd = function(prevNext){
e.preventDefault();
+ var allDisplayedElem = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')');
+ if(!allDisplayedElem.length) return;
+ var firstIndex = 0;
+ var lastIndex = allDisplayedElem.length - 1;
+ var selectedIndex = -1;
- // 得到当前队列元素
- var thisElem = function(){
- var thisDd = dl.children('dd.'+ THIS);
-
- // 如果是搜索状态,且按 Down 键,且当前可视 dd 元素在选中元素之前,
- // 则将当前可视 dd 元素的上一个元素作为虚拟的当前选中元素,以保证递归不中断
- if(dl.children('dd.'+ HIDE)[0] && prevNext === 'next'){
- var showDd = dl.children('dd:not(.'+ HIDE +',.'+ DISABLED +')')
- ,firstIndex = showDd.eq(0).index();
- if(firstIndex >=0 && firstIndex < thisDd.index() && !showDd.hasClass(THIS)){
- return showDd.eq(0).prev()[0] ? showDd.eq(0).prev() : dl.children(':last');
- }
+ layui.each(allDisplayedElem, function(index, el){
+ if($(el).hasClass(THIS)){
+ selectedIndex = index;
+ return true;
}
+ })
+
+ var nextIndex = prevNext === 'prev'
+ ? (selectedIndex - 1 < firstIndex ? lastIndex : selectedIndex - 1)
+ : (selectedIndex + 1 > lastIndex ? firstIndex : selectedIndex + 1)
- if(thisElem1 && thisElem1[0]){
- return thisElem1;
- }
- if(nearElem && nearElem[0]){
- return nearElem;
- }
-
- return thisDd;
- // return dds.eq(index);
- }();
-
- cacheNearElem = thisElem[prevNext](); // 当前元素的附近元素
- nearDd = thisElem[prevNext]('dd:not(.'+ HIDE +')'); // 当前可视元素的 dd 元素
-
- // 如果附近的元素不存在,则停止执行,并清空 nearElem
- if(!cacheNearElem[0]) return nearElem = null;
-
- // 记录附近的元素,让其成为下一个当前元素
- nearElem = thisElem[prevNext]();
-
- // 如果附近不是 dd ,或者附近的 dd 元素是禁用状态,则进入递归查找
- if((!nearDd[0] || nearDd.hasClass(DISABLED)) && nearElem[0]){
- return setThisDd(prevNext, nearElem);
- }
-
- nearDd.addClass(THIS).siblings().removeClass(THIS); // 标注样式
+ var selectedElem = allDisplayedElem.eq(nextIndex);
+ selectedElem.addClass(THIS).siblings().removeClass(THIS); // 标注样式
followScroll(); // 定位滚动条
};
@@ -658,9 +635,11 @@ layui.define(['lay', 'layer', 'util'], function(exports){
if(createOptionElem[0]){
createOptionElem.attr('lay-value', value).html(util.escape(value));
}else{
- var ddElem = $('');
- ddElem.addClass(CREATE_OPTION).attr('lay-value', value).html(util.escape(value));
- dl.append(ddElem);
+ // 临时显示在顶部
+ var ddElem = $('').addClass(CREATE_OPTION).attr('lay-value', value).html(util.escape(value));
+ var firstOptionELem = dl.children().eq(0);
+ var hasTips = firstOptionELem.hasClass('layui-select-tips');
+ firstOptionELem[hasTips ? 'after' : 'before'](ddElem);
}
}
}else{
@@ -719,10 +698,10 @@ layui.define(['lay', 'layer', 'util'], function(exports){
othis.addClass(THIS);
}
+ // 将新增的 option 元素添加到末尾
if(isCreatable && othis.hasClass(CREATE_OPTION)){
- othis.removeClass(CREATE_OPTION);
- var optionElem = $('