详解easyui基于 layui.laydate日期扩展组件


Posted in Javascript onJuly 18, 2018

本人后端开发码农一个,公司前端忙的一逼,项目使用的是easyui组件,其自带的datebox组件使用起来非常不爽,主要表现在

1、自定义显示格式很麻烦

2、选择年份和月份用户体验也不好

网上有关于和 My97DatePicker 结合的例子,但感觉也用的不是很爽。

发现国内的layDate体验非常满意,所以萌生出想把这两个组件组合起来的想法,具体代码如下,本人非前端,所以只是实现了基本功能,大神勿喷哦。

easyUI版本:V1.5.2

layDate版本:V5.0

/*
基于laydate日期扩展组件
*/
(function ($) {
  function createBox(target) {
    var state = $.data(target, 'laydate');
    var opts = state.options;
    $(target).addClass('datebox-f').textbox($.extend({}, opts, {
      editable: false,
      icons: [{ iconCls: 'combo-arrow' }]
    }));
    $(target).next("span.textbox").addClass('datebox');
    laydate.render({
      elem: '#' + $(target).next("span.textbox").children(":text").attr("id"), //指定元素,
      format: opts.format,
      type: opts.datetype,
      min: opts.min,
      max: opts.max,
      zIndex :opts.zIndex ,
      range :opts.range ,
      theme: opts.theme,
      calendar: opts.calendar,
      mark: opts.mark,
      done: function (value, date, endDate) {
        $(target).textbox('setValue', value);
        opts.onSelect.call(target, value, date, endDate);
      },
      change: function(value, date, endDate) {
        opts.onChange.call(target, value, date, endDate);
      }
    });
  }
  $.parser.plugins.push("laydate");//注册扩展组件
  $.fn.laydate = function (options, param) {
    if (typeof options == 'string') {
      var method = $.fn.laydate.methods[options];
      if (method) {
        return method(this, param);
      } else {
        return this.textbox(options, param);
      }
    }
    options = options || {};
    return this.each(function () {
      var state = $.data(this, 'laydate');
      if (state) {
        $.extend(state.options, options);
      } else {
        $.data(this, 'laydate', {
          options: $.extend({}, $.fn.laydate.defaults, $.fn.laydate.parseOptions(this), options)
        });
      }
      createBox(this);
    });
  };
  $.fn.laydate.methods = {
    options: function (jq) {
      var copts = jq.textbox('options');
      return $.extend($.data(jq[0], 'laydate').options, {
        width: copts.width,
        height: copts.height,
        originalValue: copts.originalValue,
        disabled: copts.disabled,
        readonly: copts.readonly
      });
    }
  };
  $.fn.laydate.parseOptions = function (target) {
    return $.extend({}, $.fn.textbox.parseOptions(target));
  };
  $.fn.laydate.defaults = $.extend({}, $.fn.textbox.defaults,
    {
      //laydate 参数说明:http://www.layui.com/doc/modules/laydate.html#type
      theme: "#0099cc",
      datetype: "date",//控件选择类型 year month date time datetime
      range: false,//开启左右面板范围选择 或 range: '~' 来自定义分割字符

      //最小/大范围内的日期时间值 
      //如果值为字符类型,则:年月日必须用 -(中划线)分割、时分秒必须用 :(半角冒号)号分割。这里并非遵循 format 设定的格式
      //如果值为整数类型,且数字<86400000,则数字代表天数,如:min: -7,即代表最小日期在7天前,正数代表若干天后
      //如果值为整数类型,且数字 ≥ 86400000,则数字代表时间戳,如:max: 4073558400000,即代表最大日期在:公元3000年1月1日
      min: '1900-1-1',
      max: '2099-12-31',

      format: "yyyy-MM-dd",//自定义格式
      zIndex: 66666666,//层叠顺序
      calendar: false,//是否显示公历节日

      //标注重要日子
      //每年的日期 {'0-9-18': '国耻'} 0 即代表每一年
      //每月的日期 {'0-0-15': '中旬'} 0-0 即代表每年每月(layui 2.1.1/layDate 5.0.4 新增)
      //特定的日期 {'2017-8-21': '发布')
      mark: {},
      onSelect: function (value, date, endDate) { },
      onChange: function (value, date, endDate) { }
    });

})(jQuery);

使用方法一:

<input name="BYXX" type="text" id="BYXX" class="easyui-laydate" data-options="width:200,datetype:'month'" />

使用方法二:

<input type="text" id="BYXX" />
  <script type="text/javascript">
    $(function () {
      $("#BYXX").laydate({ width: 200, datetype: 'month' });
    });
  </script>

别忘记引用jquery、easyui和laydate的js文件了哦

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 面向对象之命名空间
May 04 Javascript
js URL参数的拼接方法比较
Feb 15 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
Jan 11 Javascript
兼容主流浏览器的JS复制内容到剪贴板
Dec 12 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
May 30 Javascript
Angular 路由route实例代码
Jul 12 Javascript
jQuery倒计时代码(超简单)
Feb 27 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
vue的传参方式汇总和router使用技巧
May 22 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
关于JavaScript中异步/等待的用法与理解
Nov 18 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 #Javascript
微信小程序修改swiper默认指示器样式的实例代码
Jul 18 #Javascript
webpack4.x打包过程详解
Jul 18 #Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 #Javascript
Vue隐藏显示、只读实例代码
Jul 18 #Javascript
详解vue中axios的封装
Jul 18 #Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 #Javascript
You might like
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
原生JS实现留言板
2020/03/26 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
Python中property函数用法实例分析
2018/06/04 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
Python 移动光标位置的方法
2019/01/20 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
冰淇淋店创业计划书范文
2013/12/27 职场文书
表扬信格式
2014/01/12 职场文书
留学推荐信写作指南
2014/01/25 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
个人年终总结结尾
2015/03/06 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
公司开业致辞
2015/07/29 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript