laydate限制结束时间大于开始时间,并且开始时间大于现在时间

laydate限制结束时间大于开始时间,并且开始时间大于现在时间
代码如下


<div class="layui-inline">
    <lable>开始时间:</lable>
    <input type="text" class="layui-input" id="test1" >
    <lable>结束时间:</lable>
    <input type="text" class="layui-input" id="test2">
</div>

js代码

layui.use('laydate', function(){
    var layer = layui.layer;
    var laydate = layui.laydate;
    var startTime = 0;
    var endTime = 0;
    function formDatrToTimestamp(dateString) {//将日期转化为时间戳
        var timestamp = Date.parse(new Date(dateString)) / 1000;
        return timestamp;
    }
    laydate.render({
        elem: '#test1',
        // min: new Date().toLocaleDateString(),
        min: new Date().toLocaleDateString(),
        min : laydate.now(),
        done: function (value, date, endDate) {

            console.log(value); //得到日期生成的值,如:2017-08-18
            console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
            console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
            /console.log(value + '的时间戳为' + formDatrToTimestamp(value));
            startTime = formDatrToTimestamp(value);
            if (endTime != 0 && endTime < startTime) {
                layer.msg("时间范围不合法");
            }
        }
    });
    laydate.render({
        elem: '#test2', //指定元素
        min: new Date().toLocaleDateString(),
        done: function (value, date, endDate) {
            console.log(value); //得到日期生成的值,如:2017-08-18
            console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
            console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。
             console.log(value + '的时间戳为' + formDatrToTimestamp(value));
            endTime = formDatrToTimestamp(value);
            if ( endTime < startTime) {
                layer.msg("时间范围不合法");
            }
        }
    });
});

之前实现限制日期的功能用的都是js代码,没用过插件。
避免结束时间小于开始时间,可以直接使用range开启左右面板范围选择,还可以用max,和min限制开始和结束日期的范围保证结束日期的最小值大于开始日期的最大值。在没有明确的范围限制的情况下,可通过上述代码解决。
1.获取现在时间,网上好多用的layDate.now(),但是新版layDate已经找不到这个方法了,有没有代替他的方法,我也母鸡,所以完全可以使用 js 原生的 Date 对象,但是在这里要用tolocaleDateString把日期转化成数字格式才能匹配。

 min: new Date().toLocaleDateString()

2.比较开始时间和结束时间,我习惯把他们转化成时间戳然后进行比较
刚开始我只在结束时间的回调函数里进行比较,但是这样有个bug,如果先输入结束时间再输入开始时间,则无法判断。所以要在开始时间的回调函数里判断结束时间是否存在,存在即进行判断。

 if (endTime != 0 && endTime < startTime) {
                    layer.msg("时间范围不合法");
                }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!感谢您的提问。如果您想要使用 laydate 设置两个时间选择器后面的时间大于前面的,您可以使用 laydate 的 `range` 参数来实现。具体步骤如下: 1. 在 HTML 中定义两个文本框,分别作为起始时间结束时间的输入框。 ```html <input type="text" name="start" id="start" placeholder="请选择起始时间"> <input type="text" name="end" id="end" placeholder="请选择结束时间"> ``` 2. 在 JavaScript 中引入 laydate,并使用 `laydate.render()` 方法来渲染时间选择器。在 `laydate.render()` 的参数中,您可以通过 `range: true` 来启用时间范围选择器;通过 `min` 和 `max` 参数来设置起始时间结束时间的最小值和最大值,从而实现后面的时间大于前面的效果。 ```javascript layui.use('laydate', function(){ var laydate = layui.laydate; //执行一个laydate实例 laydate.render({ elem: '#start', //起始时间的输入框 type: 'datetime', //选择器类型为日期时间 format: 'yyyy-MM-dd HH:mm:ss', //日期时间的格式 range: true, //启用时间范围选择器 max: '2099-06-16 23:59:59', //设置结束时间的最大值 done: function(value, date){ //选择起始时间后,更新结束时间的最小值 endTime.min = value; endTime.start = value; } }); //执行一个laydate实例 var endTime = laydate.render({ elem: '#end', //结束时间的输入框 type: 'datetime', //选择器类型为日期时间 format: 'yyyy-MM-dd HH:mm:ss', //日期时间的格式 range: true, //启用时间范围选择器 min: '1970-01-01 00:00:00', //设置起始时间的最小值 done: function(value, date){ //选择结束时间后,更新起始时间的最大值 startTime.max = value; } }); //起始时间laydate实例 var startTime = laydate.render({ elem: '#start', //起始时间的输入框 type: 'datetime', //选择器类型为日期时间 format: 'yyyy-MM-dd HH:mm:ss', //日期时间的格式 range: true, //启用时间范围选择器 max: '2099-06-16 23:59:59', //设置结束时间的最大值 done: function(value, date){ //选择起始时间后,更新结束时间的最小值 endTime.min = value; endTime.start = value; } }); }); ``` 以上代码中,我们定义了三个 laydate 实例:`startTime` 用于起始时间的选择,`endTime` 用于结束时间的选择,`laydate.render()` 参数中的 `done` 回调函数用于更新起始时间结束时间的最大值和最小值。 希望以上代码可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值