Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.9k views
in Technique[技术] by (71.8m points)

laydate日期控件多个实例问题

代码如下:

`//遍历循环创建实例

    $('.layui-input').each(function (index) {
        var _this = this;
        laydate.render({
            elem: _this,
            trigger: 'click',//可以解决多个实例闪退问题
            isInitValue: false,//初始值填充
            // value:$('#TimeVal'+index).text(),
            range: index < 3 ? '~' : false, //或 range: '~' 来自定义分割字符
            ready: function (date) {//初始回调
                console.log('初始:', date); //得到初始的日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
            },
            change: function (value, date, endDate) {//选择切换回调
                console.log('选择切换回调:',value,date,endDate); //得到日期生成的值,如:2017-08-18
            },
            done: function (value, date) {
                console.log(value, date)
                $('#TimeVal' + index).text(value)
            }
        });
    });`
    

结果是当我选择了一个时间,后面的实例跟着回显了当前时间,我想要的是后面要选择才回显时间并不是选择了一个时间,后面的框也跟着回显了当前的时间,如下:
image.png

试了下因为我的dom结构是非input元素绑定laydate的,
image.png
这样div里面有文字就是有那样的问题,没有文字就是正常的,用input绑定也是正常的,但是我需要宽度自适应所以就不想要input元素绑定。有没有大佬有好的想法呢


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

用input元素宽度比较难做到自适应,所以想办法给非input元素加上placeholder,
解决办法如下:
dom结构:

<div class="layui-inline flex_align">
                            <i>统计时间:</i>
                            <!-- <input type="text" class="layui-input" placeholder="请选择统计时间" readonly="readonly"
                                id="waresTime"> -->
                            <div class="layui-input" id="waresTime" placeholder="请选择统计时间"></div>
                            <em class="x_date flex_center"></em>
                        </div>

css(关键):

.layui-input:empty::before{
    content:attr(placeholder);
}

js:

//同时绑定多个
        lay('.layui-input').each(function (index) {
            laydate.render({
                elem: this,
                trigger: 'click',//可以解决多个实例闪退问题
                // isInitValue: false,//初始值填充(需配合value使用)
                // value:$('#TimeVal'+index).text(),
                range: index < 3 ? '~' : false, //或 range: '~' 来自定义分割字符
                theme: '#0069E0',//主题
                done: function (value, date) {
                    $('#TimeVal' + index).text(value)
                }
            });
        }); 

可参考:
https://www.mybj123.com/4882....


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...