【问题标题】:jQuery validate credit card exp date as future datejQuery将信用卡到期日期验证为未来日期
【发布时间】:2010-07-09 21:10:21
【问题描述】:

我似乎无法做到这一点,我可以让它捕捉过去的日期,但不能在未来的日期返回 true。我只需要验证我的表单的信用卡到期日期是否在未来,这是不工作,有什么想法吗?日期必须采用 MM/YYYY 格式,并在它们之间加一个“/”。

$.validator.addMethod(
"FutureDate",
function(value, element) {
    var startdatevalue = (.getMonth/.getYear);
    return Date.parse(startdatevalue) < Date.parse($("#ExpirationDate").val());
}, 
    "End Date should be greater than Start Date."
);

【问题讨论】:

    标签: jquery-validate


    【解决方案1】:

    您实际上并没有让它捕捉过去的日期。如果您将像“11/2010”这样的日期传递给您的Date.parse(),它将返回NaN(或不是数字),这在逻辑上等同于返回false

    尝试这样做以了解我的意思:

    alert( Date.parse('11/2010') );
    

    如果您添加天数,它应该可以工作。比如:

    var startdatevalue = '11/1/2010';
    

    当然,此示例使用硬编码日期。如果值存储为11/2010,您可以尝试以下操作:

        // Get the index of the "/"
    var separatorIndex = value.indexOf('/');
    
        // Add "/1" before the separatorIndex so we end up with MM/1/YYYY
    var startDate = value.substr( 0, separatorIndex ) + '/1' + value.substr( separatorIndex );
    
        // Do the same with the expiration date
    var expDate = $("#ExpirationDate").val();
    separatorIndex = expDate.indexOf('/');
    expDate = expDate.substr( 0, separatorIndex ) + '/1' + expDate.substr( separatorIndex );
    
        // Return the comparison
    return Date.parse(startDate) < Date.parse(expDate);
    

    【讨论】:

    • @Patrick,我现在正在测试上述内容。我不确定为什么需要在日期中添加“/1”。日期只能输入为 MM/YYYY,我只需要验证输入的 MM/YYYY 是否在当前 MM/YYYY 之前
    • @Dirty - 原因是Date.parse() 不接受MM/YYYY 格式,所以我们只是添加了一个天数以使其满意。这只是一个临时修复,使您想要的格式与Date.parse() 一起工作。它最终不会改变输入值。
    • @Patrick - 有趣...假设您输入 07/2015 作为日期,(我使用上面的代码并停留在警报(startDate);和警报(expDate);)两个日期是相同的,除了例如 startDate val = 7/1/2015 和 expDate = 07/2015。它返回 false,它似乎没有将当前(今天的)日期与 exp 进行比较。日期,即使返回 Date.parse.... 显示正确
    • @Dirty - 如果您说您对两个日期都应用了修复程序,但它仍然返回 false,那是因为您正在进行“小于”比较。要使其在日期相等时返回 true,您需要比较“小于或等于”,如 &lt;= 而不是 &lt;
    • @Patrick - 差不多,但它仍然只是将您作为 exp 日期输入的日期与自身进行比较,而不是从任何地方获取日期。使用下面的代码,它在任何日期都返回 true。
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2019-10-16
    • 2010-12-11
    • 2012-07-16
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多