尝试将开始和结束日期与 mm/yyyy 格式进行比较
Posted
技术标签:
【中文标题】尝试将开始和结束日期与 mm/yyyy 格式进行比较【英文标题】:Try to compare start & end date with mm/yyyy format 【发布时间】:2012-02-25 15:34:08 【问题描述】:我在其他用户的帮助下从这里写了这篇文章,但没有工作。
我有两个字段,来自此处的 maskedinput > http://digitalbush.com/projects/masked-input-plugin/ 格式为:mm/yyyy
我想比较结束日期大于开始日期,如果不是,则禁用提交按钮。但我一直想要用户,他们可以在不通知开始或结束日期的情况下注册表格。 所以我只想比较这两个字段,当它们里面有 7 个字符时, 功能必须在这个 > yyyymm 中完成,因为使用 mmyyyy 他们没有机会正常工作。
你有什么想法可以推荐给我吗?
在此先感谢您的帮助;)
<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();
);
);
【问题讨论】:
其中哪一部分不起作用?有什么用吗?您收到错误消息吗?还是什么都没发生? 你好DOK,什么都没有发生,我对JS不是很熟悉 【参考方案1】:首先,您的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;
【讨论】:
【参考方案2】:正如 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();
);
);
【讨论】:
以上是关于尝试将开始和结束日期与 mm/yyyy 格式进行比较的主要内容,如果未能解决你的问题,请参考以下文章
角度材料2、将datepicker日期格式“MM/DD/YYYY”改为“DD/MM/YYYY”的奇怪行为