评论:移动端日期选择插件Mdate.js  [查看原文]

所属分类:输入-日期和时间

 146069  433  170
当前第1页 / 共6页
    爱小虾的烟斗0
    2023/5/6 11:12:28
    很好的一个日期选择控件,但是bug太多,足见开发这个控件的开发者不是一个逻辑严谨的人,大家拿来用的时候记得自己多测试一下,然后自己进行代码大改造,不然会有很多等级高的bug,最终会被终端用户喷死的 回复
    tanxiaolei0
    2022/8/22 17:37:46
    月份滑动的时候,几率性的不准确,比如滑动到五月,添加到input里面是8月,发现原因是onScrollEnd 里面获取的this.y不准确,加个定时器500毫秒后再获取就准确了,就是滑动还没结束时事件就触发了,但是加定时器,感觉不靠谱,有人遇到这个问题吗?有好的解决办法吗?
        爱小虾的烟斗1
        2023/5/6 11:14:13

        yearTag等变量不要依赖onScrollEnd中的取值,改成在sureBtn.onclick中实时获取

        try {
            indexY = Math.ceil((yearScroll.y || 0) / 40 * -1 + 1);
            yearTag = yearUl.getElementsByTagName("li")[indexY].getAttribute("data-year");
        } catch (err) {
            yearTag = that.beginYear
        }
        try {
            indexM = Math.ceil((monthScroll.y || 0) / 40 * -1 + 1);
            monthTag = monthUl.getElementsByTagName("li")[indexM].getAttribute("data-month")
        } catch (err) {
            monthTag = 1
        }
        try {
            indexD = Math.ceil((dayScroll.y || 0) / 40 * -1 + 1);
            dayTag = dayUl.getElementsByTagName("li")[indexD].getAttribute("data-day")
        } catch (err) {
            dayTag = 1
        }
    回复
    GailJY0
    2022/5/16 15:58:05
    请问怎么设置月份为英文?
        koalafiend0
        2023/6/17 10:30:53
        你自己用原生js没法修改么
    回复
    朱刚0
    2022/5/7 13:49:43
    可以设置只选择年月吗? 回复
    烈日0
    2021/8/29 17:46:58
    没有默认当时时间的选项,如果我在开始时间写当前时间,今天之前的日期就不能选。
        爱小虾的烟斗1
        2023/5/6 11:15:22
        input控件的data-year、data-month、data-day 属性对应的就是默认时间,可以自己设置
    回复
    Fighte0
    2021/6/7 20:44:16
    在手机上有时候点击确定或取消按钮不生效是啥原因
        tanxiaolei0
        2022/8/22 17:40:41
        是点不动吗?我遇到过,是在滚动结束后getAttribute报错了,用try..catch包起来就好了
    回复
    寒冰若水0
    2021/3/23 16:09:35
    源代码有一句写错了
        寒冰若水1
        2021/3/23 16:11:04

        createDateYMD事件

        if (type == "month") {
            unitName = "月";
            dataStyle = "data-month";
            beginNum = that.beginMonth;
            endNum = 12;
        
            if (yearTag != that.beginYear) {
                beginNum = 1
            }
            if (yearTag == dateopts.endYear) {
                endNum = that.endMonth
            } //此处应该是that.endYear
        }
        Dream0
        2022/8/15 9:47:03
        谢谢,很有帮助👍
    回复
    Some Time0
    2020/9/9 12:00:53
    里面可以添加至今选项吗 回复
    (⊙_⊙)0
    2020/9/4 16:22:06
    请问显示格式怎么只设置年月 回复
    tanxiaolei0
    2020/6/17 16:14:40
    苹果6s掉不起来怎么解决 回复
    昕创科技0
    2020/2/19 18:22:38
    2020年没有月份了
        d3
        2020/8/2 14:21:28

        原因产生:插件内部初始化的参数默认传入当前日期作为结束值endXXX,我们自定义时同样把当前日期作为开始值beginXXX,导致插件createDateYMD函数在type == "month"时判断出现了开始值大于结束值,但是渲染dom时按照for循环的i++模式取不到值。

        if (type == "month") {
            unitName = "月";
            dataStyle = "data-month";
            beginNum = that.beginMonth;
            endNum = 12;
            if (yearTag != that.beginYear) {
                beginNum = 1
            }
            if (yearTag == dateopts.endYear) {
                endNum = that.endMonth
            }
        }
        for (var i = beginNum; i <= endNum; i++) {
            str += "<li " + dataStyle + "=" + i + ">" + that.dateForTen(i) + unitName + "</li>"
        }

        格式化源码并查看,如下:

        includeCss("Mdate/needcss/Mdate.css");
        var dateopts = {
            beginYear: 2000,
            beginMonth: 1,
            beginDay: 1,
            endYear: new Date().getFullYear(),
            endMonth: new Date().getMonth() + 1,
            endDay: new Date().getDate(),
            format: "YMD"
        }

        解决办法一:

        去除插件初始化endXXX的动态日期为固定日期

        var dateopts = {
            beginYear: 2000,
            beginMonth: 1,
            beginDay: 1,
            endYear: 2099,
            endMonth: 1,
            endDay: 1,
            format: "YMD"
        };

        解决办法二:
        渲染dom结构的for循环先判断下初始月份和结束月份值的大小,按照i++从小到大的顺序写

        jq10241
        2020/11/26 9:03:35

        设置endYear的时间在2020年以后,导致2020年的月份显示不全的问题,可以将

        if (yearTag == dateopts.endYear) {}

        改成

        if (yearTag == that.endYear) {}

        这样月份就显示正常了.

    回复
    雪的颜色0
    2019/12/3 12:54:19
    特效在2019年前都可以调节开始和结束时间 只要到了2020年之后就无法控制了...BUG吗? 回复
    Icat0
    2019/11/14 17:49:27
    可以设置只选择年月吗?
    回复
    阿菠萝n号0
    2019/10/23 10:53:45
    样式全乱了,自己的页面加上这个插件
        areyouOk0
        2019/11/5 17:02:55
        可能插件样式和你页面样式有冲突,批量替换一下。
    回复
    11632013010
    2019/10/16 17:30:02
    这个可以显示 时分秒么
        阿菠萝n号0
        2019/10/23 10:56:02
        不行
    回复

讨论这个项目(170)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

取消回复