我是在这里的其他用户的帮助下写的,但没有工作。
我有两个字段,从这里使用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 :(得分: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();
});
});