尝试比较start&以mm / yyyy格式结束日期

时间:2012-02-02 23:19:30

标签: jquery date validation

我是在这里的其他用户的帮助下写的,但没有工作。

我有两个字段,从这里使用maskedinput> http://digitalbush.com/projects/masked-input-plugin/格式为:mm / yyyy

我想比较结束日期​​大于开始,如果不是,则禁用提交按钮。但我总是想要用户,他们可以注册表格而不通知开始或结束日期。 所以我只想比较这两个字段,当它们里面有7个字符时,和 必须在这个>中完成功能。 yyyymm因为mmyyyy他们没有机会正常工作。

你有什么想法建议我吗?

提前感谢您提供任何帮助;)

HTML

<form class="blockdate">
    <input name="stardate"type="text" class="date"/>
    <input name="enddate" type="text" />
    <input name="submit" type="submit" class="date"/>
</form>

<div id="msg"></div>

JS

var compareA = getElementsByName("startdate");
var comparen = getElementsByName("enddate");
function compare() {
// 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) {
       $('#msg').html('Check Stard & Endate.');
        $(".submit").prop("disabled",true);

}
}


    jQuery(function($) {

         $('.blockdate').submit(function() {
          return compare;
       });

        $(".date").change(function(){
          if(datevalue2.length == 7) {
            compare;
          } else {
            clean();
          }
      });
    });

2 个答案:

答案 0 :(得分:0)

首先,您的enddate没有为其分配课程date。所以你永远不会抓住那个价值。其次,如果你需要颠倒月份的顺序,那么只需交换子串调用:

//         month                   year
compareA = dateA.substring(0, 2) + dateA.substring(3);

//         year                   month
compareA = dateA.substring(3) + dateA.substring(0,2);

最后你应该jsut使用Date对象来获得一个unix时间戳,它是你可以用来比较的给定日期的真实整数版本:

function compare(start, end) {

  var start, 
    end,
    toDate = function(datestr){
        return new Date(parseInt(datestr.substring(3)), parseInt(datestr.substring(0, 2)));
    };

    if(toDate(start).getTime() > toDate(end).getTime()) {
        $('#msg').html('Check Stard & Endate.');
        $(".submit").prop("disabled",true);
        return false;
    }

    return true;
}

答案 1 :(得分:0)

prodigitalson 回答时,您的代码应该是这样的

HTML

<form class="blockdate">
<input name="stardate"type="text" id="dateA" class="date"/>
<input name="enddate" type="text" id="dateB" class="date"/>
<input name="submit" type="submit" value="submit" id="btnOk"/>
</form>
<div id="msg"></div>

JS

function compare(start, end) {

    var start, end, toDate = function(datestr) {
        return new Date(parseInt(datestr.substring(3)), parseInt(datestr.substring(0, 2)));
    };

    if (toDate(start).getTime() > toDate(end).getTime()) {
        $('#msg').html('Check Stard & Endate.');
        $(".submit").prop("disabled", true);
        return false;
    }

    return true;
}

function clean() {
    $('#msg').html('');
    $("#btnOk").removeAttr("disabled");
}

$(document).ready(function() {

    $('#btnOk').click(function(e) {
        if (!compare()) e.preventDefault();
        return true;
    });

    $(".date").bind("keyup", "change", function() {

        var startDate = $("#dateA").val();
        var endDate = $("#dateB").val();

        if (startDate.length == 7 && endDate.length == 7) compare(startDate, endDate);
        else clean();
    });

});
相关问题