对象初始化完成后,通过对象修改format后不生效
var startDate = laydate.render({ elem: '#startDate', //指定元素 #startDate是一个input type: 'date', format: 'yyyy年MM月dd日', isInitValue: true, //是否允许填充初始值,默认为 true done: function(value, date, endDate) { /*回调里修改了type 和format 发现type的修改生效了,但是formar的修改没有生效,看源码发现是没有更新this.format、that.EXP_IF和that.EXP_SPLIT。(PS:这里只是举例,实际项目中是通过别的按钮触发改变type和format 事件的。) */ startDate .config.type = 'month'; startDate .config.format = 'yyyy年MM月'; } });pull/73/head
parent
bfc0c1bf6d
commit
db3a486b57
|
@ -1362,6 +1362,35 @@
|
|||
: (options.range ? lay.extend({}, that.startDate, that.startTime) : options.dateTime))
|
||||
,format = that.format.concat();
|
||||
|
||||
//#region 因为that.config可能被外部改变了,所以这里需要根据options.format重新生成正则表达式和返回结果的格式 by 凌云 2018-08-02
|
||||
that.EXP_IF = '';
|
||||
that.EXP_SPLIT = '';
|
||||
var dateType = 'yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s';
|
||||
format = options.format.match(new RegExp(dateType + '|.', 'g')) || [];
|
||||
that.format = format;
|
||||
lay.each(that.format, function(i, item) {
|
||||
var EXP = new RegExp(dateType).test(item) ?
|
||||
'\\d{' + function() {
|
||||
if (new RegExp(dateType).test(that.format[i === 0 ? i + 1 : i - 1] || '')) {
|
||||
if (/^yyyy|y$/.test(item)) return 4;
|
||||
return item.length;
|
||||
}
|
||||
if (/^yyyy$/.test(item)) return '1,4';
|
||||
if (/^y$/.test(item)) return '1,308';
|
||||
return '1,2';
|
||||
}() + '}' :
|
||||
'\\' + item;
|
||||
that.EXP_IF = that.EXP_IF + EXP;
|
||||
that.EXP_SPLIT = that.EXP_SPLIT + '(' + EXP + ')';
|
||||
});
|
||||
that.EXP_IF = new RegExp('^' + (
|
||||
options.range ?
|
||||
that.EXP_IF + '\\s\\' + options.range + '\\s' + that.EXP_IF :
|
||||
that.EXP_IF
|
||||
) + '$');
|
||||
that.EXP_SPLIT = new RegExp('^' + that.EXP_SPLIT + '$', '');
|
||||
//#endregion
|
||||
|
||||
//转义为规定格式
|
||||
lay.each(format, function(i, item){
|
||||
if(/yyyy|y/.test(item)){ //年
|
||||
|
@ -1863,4 +1892,4 @@
|
|||
}()
|
||||
);
|
||||
|
||||
}();
|
||||
}();
|
||||
|
|
Loading…
Reference in New Issue