由于无法将字符串转换为数字,因此日期选择器在Internet Explorer中不起作用

我正在制作一个日期过滤器,该过滤器使用https://www.npmjs.com/package/js-datepicker格式为“ MM / DD / YYYY”的输入字符串,然后尝试将其转换为数字以在有条件的条件下使用该条件,该条件将显示项目在指定日期内掉落的我的函数采用undefined / NaNs,并根据开始或结束日期填写Date.parse(“ 01/01/1970”)或Date.parse(“ 01/01/3000”)。我的问题是,在IE中,我所有的日期都返回NaN,因此该过滤器无法正常工作-在Chrome和Edge中它可以正常工作,但在IE中却没有任何作用(因为一切都在1971年到3000年之间。

我曾尝试以多种方式对数据进行切片和切块,但似乎我什至无法将“ 10”转换为10,而没有得到NaN。

var isd: any = startDate[0].value;
        console.log(isd);
        console.log(typeof isd);
        var parts = isd.split("/");
        console.log(parts[0],parts[1],parts[2]);

        let year = parts[2];
        let month = parts[0]; // 0 is january
        let day = parts[1];
        console.log(year,month,day);
        console.log(typeof year,typeof month,typeof day)

        year = parseInt(year);
        month = parseInt(month) - 1;
        day = parseInt(day);
        console.log(year,day);

        let year2 = parts[2];
        let month2 = parts[0]; // 0 is january
        let day2 = parts[1];

        year2 = parseFloat(year2);
        month2 = parseFloat(month2) - 1;
        day2 = parseFloat(day2);
        console.log(year2,month2,day2);

        let year3 = parts[2];
        let month3 = parts[0]; // 0 is january
        let day3 = parts[1];

        year3 = Number(year3);
        month3 = Number(month3) - 1;
        day3 = Number(day3);
        console.log(year3,month3,day3);

        var inputStartDate: any = new Date(year,day);
        inputStartDate = inputStartDate.toString();

        // console.log(this.startDate,this.endDate,thisStartDate,thisEndDate);
        console.log(isd,ied,inputStartDate,inputEndDate);

我希望当我执行Number || parseInt || parseFloat(“ 10”)时可以得到10。但是我只能得到NaN。

我的console.log如下:

10/10/2019
string
10 10 2019
2019 10 10
string string string
NaN NaN NaN (x3 lines)
‎10‎/‎16‎/‎2019  Invalid Date NaN

预先感谢

blackless 回答:由于无法将字符串转换为数字,因此日期选择器在Internet Explorer中不起作用

好的,这就是我解决此问题的方法:

在文档中,js-datepicker具有一个onSelect方法,该方法可以访问该datepicker实例(https://www.npmjs.com/package/js-datepicker#onselect)-datepicker实例具有一个dateSelected属性,该属性未定义(未选择日期)或Date对象匹配用户选择。我只是将此dateSelected设置为一个更全局范围的var(inputStartDate和inputEndDate),并在我的条件中使用了inputStart / EndDate.getTime()。我还通过将空日期设置为比我要过滤的对象所处的时间早或晚来处理空日期。这是我的onSelect代码的示例:

    onSelect: (instance: any) => {
        if (instance.el.id === "filter-start-date") {
            if (instance.dateSelected === undefined) {
                inputStartDate = new Date("05-02-91");
                // console.log("happy birthday!");
            } else {
                inputStartDate = instance.dateSelected; // date obj
            }
        } else if (instance.el.id === "filter-end-date") {
            if (instance.dateSelected === undefined) {
                inputEndDate = new Date("01-01-3031");
                // console.log("welcome to the future");
            } else {
                inputEndDate = instance.dateSelected;
            }
        }

此解决方案规避了从日期选择器设置的输入字段中获取数据的整个过程,这在某种程度上与选择器方法/ DOM树获取/设置/数据操作不兼容。

本文链接:https://www.f2er.com/3165671.html

大家都在问