vue使用laydate时间插件的方法

之前在做vue项目时使用iviewUI库中的DatePicker组件,发现DatePicker使用起来比较麻烦,尤其是对时间精确度上的限制不尽人意,操作起来也比较繁琐,总之在处理一系列时间组件相互联动上存在一大堆问题,比如

DatePicker时间组件

时间精确到分,组件1的value等于组件2的最小值,组件2的vlaue等于组件3的最小值,。。。依次类推,如果是时间精确到日,这个组件没有任何问题,如果是精确到时分秒,这个组件的对时分秒的控制就不是那个灵敏了,在点击时分秒之后才能识别出对时分秒的限制,而这种用户体验不够友好。

所以,想到了以前用过的laydate时间插件

在vue中使用laydate

在vue组件中npm install laydate,然后在vue组件中直接引入:

import laydate from 'laydate'

然后在mounted中调用:

laydate.now();

发现chrome浏览器控制台中报错,laydate is not defined,然后把laydate.js放在静态资源里面引入:

import laydate from '../../static/js/laydate.js'

发现chrome浏览器控制台中依然是报错,laydate is not defined,然后在html入口文件中引入:

<script src="./src/static/js/laydate.js"></script>

发现chrome浏览器控制台中不报,laydate is not defined,但是又报另外一个错误:require is not defined,查看原码发现是因为laydate.js中在引用css样式表时未定义:require('./need/laydate.css');require('./skins/default/laydate.css');

最后使用laydate打包构建后的文件:dist/laydate/laydate.min.js,把laydate.min.js和css粘贴到src/static/路径下,注意js和css结构不要改变

<script src="./src/static/laydate/laydate.min.js"></script>

然后在chrome浏览器中成功打印出了laydate.now()的值:2018-10-21

然后使用import方式引入laydate.min.js:

import laydate from '../../static/laydate/laydate.min.js'

chrome控制台里有报错:laydate.now is not a function

原因时laydate.min.js是直接把laydate对象注册到了window上,本身并没有export default laydate出口,所以不能使用这种方式引用,应该使用:

import '../../static/laydate.min.js'

这样引用后,chrome中成功打印laydate.now(); 2018-10-21

或者在入口文件index.html中使用cdn加速方式引入laydate.min.js也是可以的:

<script src="https://cdn.jsdelivr.net/npm/laydate@1.0.7/dist/laydate.min.js"></script>

当然,如果项目中只是个别地方是使用到时间插件,建议采用import方式引入

laydate.min.js时间插件在vue组件中的使用方式

<template>
  <div id="laydateIndex">
    <div class="input-item">
      <label for="">请选择时间:</label>
      <input type='text'
          name='houseChangeTime'
          placeholder='请选择日期'
          class='form-control'
          onclick="laydate({ istime: true, format: 'YYYY/MM/DD hh:mm:ss' })" />
    </div>
    <div class="input-item">
      <label for="">开始时间:</label>
      <input type="text" name="" id="begintime" placeholder='请选择日期'>
    </div>
    <div class="input-item">
      <label for="">结束时间:</label>
      <input type="text" name="" id="endtime" placeholder='请选择日期'>
    </div>
  </div>
</template>
<script>
  import '../../assets/js/laydate.min.js'
  export default {
    name: 'laydateIndex',
    data () {
      return {
        begintime: '',
        endtime: '',
        start_time: '',
      }
    },
    methods: {
      setBeginTime () {
        var _this = this;
        var mintime = laydate.now(0, 'YYYY-MM-DD hh:mm:ss');
        _this.$data.begintime = mintime;
        _this.$data.endtime = mintime;
        var begintiem_options = {
          elem: '#begintime',
          format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定义
          event: 'click', //触发事件
          istime: true, //是否开启时间选择
          isclear: true, //是否显示清空
          issure: true, //是否显示确认
          festival: true, //是否显示节日
          min: mintime, //最小日期
          max: '2099-12-31 23:59:59', //最大日期
          start: mintime, //开始日期
          fixed: true, //是否固定在可视区域
          zIndex: 99999999, //css z-index
          choose: function(dates) { // 选择日期完毕的回调
            endtime_options.start = dates;
            endtime_options.min = dates;
            _this.$data.begintime = dates;
            _this.$data.endtime = dates;
          }
        };

        var endtime_options = {
          elem: '#endtime',
          format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定义
          event: 'click', //触发事件
          istime: true, //是否开启时间选择
          isclear: true, //是否显示清空
          issure: true, //是否显示确认
          festival: true, //是否显示节日
          min: _this.$data.begintime, //最小日期
          max: '2099-12-31 23:59:59', //最大日期
          start: _this.$data.begintime, //开始日期
          fixed: true, //是否固定在可视区域
          zIndex: 99999999, //css z-index
          choose: function(dates) { // 选择日期完毕的回调
            // this.begintiem_options = dates;
          }
        };

        laydate(begintiem_options);
        laydate(endtime_options);

      },
      initPage () {
        var _this = this;
        _this.setBeginTime();
      },
    },
    mounted () {
      this.initPage();
    },
  }
</script>

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

(0)

相关推荐

  • laydate日历控件使用方法详解

    本文实例为大家分享了laydate日历控件的使用方法,供大家参考,具体内容如下 var start = { elem: '#start_0', format: 'YYYY-MM-DD', max: laydate.now(-1), istime: false, istoday: false, choose: function (datas) { $("input[name='TimeStart']").parent().next(".timeError").addC

  • Angular4.0中引入laydate.js日期插件的方法教程

    前言 laydate.js经过贤心大大的重写之后功能越来越强大,用起来也愈渐灵活了,大家都知道.Angular是不支持直接引入js文件的,下面介绍项目如果引入laydate.js的方法(可同样用于其他js文件引入,可能会有一些差别) 方法如下: 一.将下载的laydate中的js和theme文件放到一个统一的文件下面,我把它放到asset下 二.在angular-cli.json配置js 三.修改laydate.js 找到这一句补全路径和删除版本号 "modules/laydate/"

  • laydate如何根据开始时间或者结束时间限制范围

    本文教大家如何实现laydate根据开始时间或者结束时间限制范围,供大家参考,具体内容如下 $(window).load(function(){//初始化时间控件 var cartimeDate = laydate.render({ elem: '#cartime' //用车时间 ,type: 'datetime' ,format: 'yyyy-MM-dd HH:mm' ,done:function(value, date){ returntimeDate.config.min=getDateA

  • bootstrap laydate日期组件使用详解

    在日常的网页开发过程中,日期组件已经成为不可或缺的组件之一.同时,随着广大杰出攻城狮的不懈努力,也出现了很多优秀的日期组件,其中我个人觉得 layDate 日期组件是一个非常不错的组件,简洁易用,样式清爽. 此文主要以贤心所作的 layDate 组件进行日期选择的演示,敬请各位小主们参阅,若有不足之处,敬请大神指正,不胜感激! 闲不多言,直接上码. 演示文档的工程目录如下图所示: laydate-demo.html 对应的源代码为: <!DOCTYPE html PUBLIC "-//W3

  • layui-laydate时间日历控件使用方法详解

    本文实例为大家分享了laydate时间日历控件的使用方法,供大家参考,具体内容如下 layui下载地址:http://www.layui.com/ 此控件可使用layui或者独立版的layDate,两者初始化有些不同 在 layui 模块中使用layui.code <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>layDate快速使用</title&

  • layDate日期控件使用方法详解

    本文实例为大家分享了layDate日期控件的使用方法,供大家参考,具体内容如下 效果: 1.引入js文件 <script src="__PUBLIC__/laydate/laydate.js"></script> 2.初始化laydate控件 //日期 var start = { elem: '#start_time',//选择ID为START的input event:'click', format: 'YYYY-MM-DD',//自动生成的时间格式 istim

  • layDate插件设置开始和结束时间

    本文教大家使用了laydate插件设置开始和结束时间,供大家参考,具体内容如下 用的laydate插件是layDate-v5.0.6,是新版本的: 效果是选择开始时间,选择结束时间的时候开始时间之前的时间不能选: 选择结束时间,选择开始时间的时候结束时间之后的时间不能选: function time(){ //开始时间id="start",结束时间id="end"; var start = { elem: '#start', type:'date', min: '2

  • laydate时间日历插件使用方法详解

    本文为大家分享了laydate时间日历插件的使用方法,供大家参考,具体内容如下 1.前言 在处理页面表单的时候,会遇到日期类型的数据,我们可以通过时间插件的让用户来选择具体的时间,这样就会比较方便.今天记录一下laydate这个时间插件. 2.代码展示 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>测试时间插件&l

  • Bootstrap.css与layDate日期选择样式起冲突的解决办法

    问题如图: 给大家看下正常的layDate年份选择图片: 一开始想到的,以为是自己没有将layer.css导入,或者layDate.css没有导入,出现的这个问题,结果发现只要导入layer.css,会自动导入layDate.css的,所以问题不在这里. 然后通过火狐浏览器去查看样式,结果问题出在了BootStrap.css上 * {box-sizing:border-box;}重置了浏览器的盒子模型. 在网上搜索了一会,发现很多博客的解决办法是这样的: 是加上以下样式: .laydate_b

  • laydate.js日期时间选择插件

    日期时间选择插件laydate.js: 效果图: 1. 引入JS. 官网:http://laydate.layui.com <script type="text/javascript" src="js/laydate.js"></script> 2. 根据需要做相应的配置.详情参看官网. <script> laydate({ elem: '#seldate', //目标元素.由于laydate.js封装了一个轻量级的选择器引擎,因

随机推荐