javascript - 日期的 jQuery val 会导致某些日期为空字符串

标签 javascript jquery date

我有一个最奇怪的问题。不确定我是偶然发现了一个错误还是文化问题。

我想做的是计算两个日期之间经过的天数。这在大多数情况下工作得很好。但对于某些日期 $(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;
    }

Here's my working fiddle

关于javascript - 日期的 jQuery val 会导致某些日期为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032333/

相关文章:

javascript - 单击 HTML 中的输入时如何转到下一个选项卡?

循环内的 JavaScript 闭包 – 简单的实际示例

javascript - 表达式后++ 运算符的问题

javascript - 三级菜单的相对定位问题

php - 动态添加和删除嵌套(两级)输入元素?

javascript - JQuery 追加行为

JavaScript:碰撞检测

java - Talend 从字符串转换为 bigdecimal

javascript - 使用 CET 作为默认时区在 javascript 中解析日期

javascript - Date 对象曾经使用过非公历吗?