2012-02-02 25 views
-1

我在此处使用其他用户的帮助编写此文,但无法正常工作。尝试使用mm/yyyy格式比较开始日期和结束日期

我已经在这个格式有两个领域,具有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(); 
      } 
     }); 
    }); 
+0

什么,这部分是不工作?它有任何工作吗?你有错误信息吗?或者什么都没有发生? – DOK 2012-02-02 23:25:19

+0

你好DOK, 什么也没有发生,我不是很熟悉JS – Tomaw 2012-02-02 23:26:27

回答

0

所有enddate犯规首先有一个分配给它的类date。所以你永远不会抓住那个价值。其次,如果你需要扭转月份年的顺序,那么就换子串电话:

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

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

最后,你应该仅仅指刚使用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; 
} 
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(); 
    }); 

}); 
相关问题