详解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 相关文章推荐
input 输入框内的输入事件详细分析
Mar 17 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
javascript常用方法总结
May 14 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 Javascript
jQuery使用$.ajax进行即时验证实例详解
Dec 11 Javascript
基于jquery实现省市联动特效
Dec 17 Javascript
javascript每日必学之封装
Feb 23 Javascript
功能强大的Bootstrap使用手册(一)
Aug 02 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
Oct 01 Javascript
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
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
PR值查询 | PageRank 查询
2006/12/20 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
vue中appear的用法
2017/08/17 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
python同时遍历两个list用法说明
2020/05/02 Python
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
庆元旦广播稿
2014/02/10 职场文书
幼儿园中秋节活动反思
2014/02/16 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
酒会邀请函
2015/01/31 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python