layDate 新增“日期多选”和“销毁方法”

讨论 已结 精帖 125 12305
岁月小偷
悬赏:80飞吻
换换菜了哈,laydatePro有一段时间没有更新了,前段时间(挺久前了[偷笑] )有小伙伴问(不止一次[囧] )有没有准备做多选的,大概思路有,但是一直没有实施,今天找时间把这个功能给实现了,顺带做了一个小方法可以用来“销毁”已经render过的节点的laydate实例,同时好好的修改了一下laydatePro.js的代码结构,将以前很多的麻烦拿掉了,包括合并了不再分单独使用还是使用完整layui情况了,可以用同一个js。顺道的发了第一个发行版(v1.0.0),额,不知觉修改还是挺多的,希望之前使用的或者有兴趣的小伙伴可以下载新的版本看看[心]
#### 目前实现的一些功能:
1. 支持一次性render多个节点。
2. 支持render一个已经render过的节点。
3. 新增lay-data属性来设置当前节点的laydate的配置。
4. 实现快速选择时间的功能。(quickSelect)
5. 纯月份年份点击直接确定。(quickConfirm)
6. 不完整的时分秒选择。(simpleModel & format)
7. 分裂式时间范围选择。(rangeType & range)
8. 新增快速选择的两种场景支持。(range & quickSelect)
9. 新增季度选择(type:'quarter')
10. 新增可以定义周n作为一周的开始(weekStart)
11. 支持this标记的背景为圆圈(circleMark)
*新增
12. 日期选择多选(multiple)
13. 销毁laydate(laydatePro.destory)
日期选择多选支持:
目前的多选只支持date类型的,个人觉得其他的应该没有什么使用场景,特别是时间选择或者datetime等基本都是没什么用的,而且跟laydate配合起来的话就更不好弄了,因为时间选择三列时分秒还要做多选,那得是什么形式什么效果~所以目前只考虑支持date的,而且不支持range。
先上效果:

实现思路:
1,首先还是新增一个参数(multiple)决定是否要多选,当然了,不是设置了就一定可以,上面说了,只支持非range的日期选择,不过设置错了也没事,插件内部做了处理,只有满足条件了才会有效果,不满足就还是单选。
2,内部逻辑比较散,基本就是在initDate的时候检测到多选,用配置的分隔符分隔值,然后渲染的时候稍微修改一下逻辑,不然以前默认的选中值的date一样的,而是根据实际的值域去圈定;然后处理的就是事件,点击一个日期,触发内部的choose,区分多选还是单选,多选要看是选中还是取消选中,然后把值记录起来,如果是单选,那还是跟之前一样的逻辑不变;最后就是parse根据laydate实例生成一个值的字符串了,如果是多选就选中的那些值sort一下用分隔符给join起来给绑定的节点。
3,使用:

默认长方形的效果:

新增一个laydate销毁的小功能laydatePro.destroy('.laydate-test-area');
这个需求最近也看过两三回,主要还是在一些场合比如需要切换已经渲染的节点的类型,或者有更加直接的就是渲染之后不想要让它作为laydate了,希望点了不要再弹出来,诸如这些。
首先前面的情况要修改他的类型或者修改他的一些属性,这个如果之前看过我laydatePro的其他帖子应该就知道,目前laydate没办法那么容易可以向table那样子reload之类的,那么也就想起要不就给销毁原先的重新render一下,可惜,也没有自带的销毁方法。但是实际抓住重点就好办了,销毁的另外一种形式就是让这个节点重生,最终要的效果就是原先的laydate的实例已经跟当前这个节点没有关系了,不认识了就行了。
实现方法:

实际可以看到最核心的其实就是圈中的这两句代码,将要销毁的节点给clone一下然后把原始的节点给替换了,这样子对于用户来说基本就是一次无感的过程,记得把lay-key去掉,这样子基本就是一个干净的节点了,后面要渲染成啥样子的就自由发挥了。

回帖
  • 大神出品,必属精品,点赞点赞 [good]
    啥时候 tablePlug 加入下拉多选框就好了,期待[可爱]
    3 回复
  • 大佬膜拜[微笑]
    3 回复
  • 大佬就是厉害···
    2 回复
  • 社区之光就是厉害,高产各种好用的扩展!佩服,点赞!

    不过话说,官方似乎有大半年没更新了吧?感觉,哈哈哈
    2 回复
  • @冬日温暖 来源项目实践,确实有点久了,不过应该也快啦 @BUG开发工程师 [微笑] [微笑]
    2 回复
  • 很棒 继续 加油 挺你
    1 回复
  • Charlesxue
    2019-4-23
    一上来就新增 (喜出望外脸)着实佩服
    1 回复
  • ywxk
    2019-4-23
    支持一下大佬
    1 回复
  • 亲,现在遇到问题无法解决啊,刷新页面后点击laydate就不弹出了。什么情况啊?
    1 回复
  • @紫铃 突然才发现漏回复了一条信息,这个功能实现了吗?一定要是这个效果么?实际你要的就是提供一些便利的可以提供用户快速选择的一些常用的日期范围吧,如果只是要这个功能加到laydate中的话,可以看看我之前的这个帖子给 layDate 来一场大革命 的这个效果:
    1 回复