jQuery的val日期结果为空字符串的一些日期

jQuery val for dates results in empty string for some dates

本文关键字:日期 字符串 结果 val jQuery      更新时间:2023-09-26

我有一个非常奇怪的问题。我不确定是偶然发现了一个bug,还是文化问题。

我要做的是计算两个日期之间经过的天数。这在大多数情况下工作得很好。但是对于某些日期,$(date).val()返回一个空字符串。不知道为什么。

下面是我的代码:

HTML:

<ul id="dates">
    <li>
        <input type="date" class="date" max="2014-07-30" />
    </li>
    <li>
        <input type="date" class="date" max="2014-07-30" />
    </li>
</ul>

max属性总是今天的日期。我只是没有为它添加计算。

jQuery/Javascript:

var secondToLastRow = list.find('li:nth-last-child(2)');
var lastRow = list.find('li:nth-last-child(1)');
var secondToLastRowDateString = secondToLastRow.find('.date').val();
var secondToLastRowDate = new Date(Date.parse(secondToLastRowDateString));
var lastRowDateString = lastRow.find('.date').val();
var lastRowDate = new Date(Date.parse(lastRowDateString));
var days = (secondToLastRowDate - lastRowDate) / (1000 * 60 * 60 * 24);

如前所述,这可以工作,但是,对于某些日期,它返回空字符串,因此计算得到NaN结果。

我准备了一个jsfiddle:

http://jsfiddle.net/52CPp/

尝试输入任何你想要的,然后尝试使用2014-02-30作为第一个日期,它停止工作。

我在瑞典使用Chrome版本36.0.1985.125 m

还有其他人有同样的问题吗?这是文化问题吗?一个错误?

在IE10中尝试过,问题无法重现。

敬上,
罗宾

有人这样想:

var secondToLastRowDate = new Date(Date.parse(secondToLastRowDateString));
    if (isNaN(secondToLastRowDate)==true)
    {
        alert("First date is not valid!");
        return;
    }

这是我的工作小提琴