【问题标题】:End date greater than start date with mm/yyyy ? jquery validator结束日期大于开始日期 mm/yyyy ? jQuery 验证器
【发布时间】:2012-02-02 22:17:50
【问题描述】:

我看到了这个例子:Validate that end date is greater than start date with jQuery

谈到验证结束日期大于开始日期时,我输入的日期格式始终为 mm/yyyy,因此如果出现以下情况,它对我不起作用: 开始日期 > 122000 结束日期 > 012002

我想我必须分开我的日期,只检查 yyyy,是否更大,但不知道如何解决它......这是我的代码(我想说,如果我有我的输入中没有 7 个字符以不通过表单提交:

HTML

<input type="text" id="starddate" />
<input type="text" id="enddate" />
<div id="msg"></div>
<input type="submit" id="submit" />

JS

jQuery.validator.addMethod("greaterThan", 
function(value, element, params) {

    if (!/Invalid|NaN/.test(new Date(value))) {
        return new Date(value) > new Date($(params).val());
    }

    return isNaN(value) && isNaN($(params).val()) 
        || (parseFloat(value) > parseFloat($(params).val())); 
},'Must be greater than {0}.');

$("#enddate").rules('add', { greaterThan: "#startdate" });

【问题讨论】:

    标签: jquery validation date split


    【解决方案1】:

    如果您的日期值是mm/yyyy 形式的字符串,那么您不能使用new Date(value) 为它们创建Date 对象——这不是Date 构造函数is documented as accepting 的格式(直到最近,除了toString 的输出是什么之外,还没有记录接受任何东西,这也由实现决定)。

    但问题并不难:给定 dateA 和 dateB 是该格式的字符串:

    // Assumes the format mm/yyyy (not mmyyyy, which your example values seem to be in)
    var compareA, compareB;
    compareA = dateA.substring(3) + dateA.substring(0, 2);
    compareB = dateB.substring(3) + dateB.substring(0, 2);
    if (compareA > compareB) {
        // The date represented by `dateA` is later than the date
        // represented by `dateB`
    }
    

    或不太清楚

    if (dateA.substring(3) + dateA.substring(0, 2) > dateB.substring(3) + dateB.substring(0, 2)) {
        // ...
    }
    

    例如,如果您将年份移到月份之前,您可以只比较字符串,因为字符串"200012"&lt; 字符串"200201"

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2018-06-30
      • 2018-01-31
      相关资源
      最近更新 更多