Javascript和moment.js中的用户输入日期比较
我试图用moment.js比较两个与当前日期或今天日期无关的用户输入日期。我想根据日期差异显示颜色。请帮助我联系 这是我的密码:Javascript和moment.js中的用户输入日期比较,javascript,jquery,html,momentjs,Javascript,Jquery,Html,Momentjs,我试图用moment.js比较两个与当前日期或今天日期无关的用户输入日期。我想根据日期差异显示颜色。请帮助我联系 这是我的密码: 函数比较(){ var firstDate=时刻($(“#date1”).val(),“MM-DD-YYYY”); var secondDate=力矩($(“#date2”).val(),“MM-DD-YYYY”); log(firstDate.inspect(),secondDate.inspect()); if(firstDate.isValid()&&seco
函数比较(){
var firstDate=时刻($(“#date1”).val(),“MM-DD-YYYY”);
var secondDate=力矩($(“#date2”).val(),“MM-DD-YYYY”);
log(firstDate.inspect(),secondDate.inspect());
if(firstDate.isValid()&&secondDate.isValid()){
//在使用momentjs的diff函数之前,需要进行验证
var diff=Math.abs(firstDate.diff(secondDate,'days');
控制台日志(diff);
//在添加新类之前,还需要删除所有类
$(“#状态”).removeClass(“redBg”).removeClass(“greenBg”).removeClass(“yellowBg”);
如果(差异=>14){
$(“#状态”).addClass('redBg');
}否则如果(7=6){
$(“#状态”).addClass('yellowBg');
}
}否则{
$(“#状态”).addClass('yellowBg');
}
});代码>
.greenBg{
背景:绿色;
}
.yellowBg{
背景:黄色;
}
.redBg{
背景:红色;
}
您应该使用
document.getElementById('date1').value
不与
"document.getElementById'date1'"
代码应为:
var firstDate = moment(document.getElementById('date1').value, "MM-DD-YYYY");
var secondDate = moment(document.getElementById('date2').value, "MM-DD-YYYY");
或者更好
var firstDate = moment($('$date1').val(), "MM-DD-YYYY");
var secondDate = moment($('$date2').val(), "MM-DD-YYYY");
编辑
要使代码正常工作,需要如下所示:
函数比较(){
var firstDate=时刻($(“#date1”).val(),“MM-DD-YYYY”);
var secondDate=力矩($(“#date2”).val(),“MM-DD-YYYY”);
log(firstDate.inspect(),secondDate.inspect());
if(firstDate.isValid()&&secondDate.isValid()){
//在使用momentjs的diff函数之前,需要进行验证
var diff=firstDate.diff(secondDate,'days');
控制台日志(diff);
//在添加新类之前,还需要删除所有类
$(“#状态”).removeClass(“redBg”).removeClass(“greenBg”).removeClass(“yellowBg”);
如果(差异>7){
$(“#状态”).addClass('redBg');
}否则如果(差异>4){
$(“#状态”).addClass('greenBg');
}否则{
$(“#状态”).addClass('yellowBg');
}
}否则{
$(“#状态”).addClass('yellowBg');
}
}
.greenBg{
背景:绿色;
}
.yellowBg{
背景:黄色;
}
.redBg{
背景:红色;
}
你做错的是在onclick=function()上
您不能以这种方式在onclick
中分配未命名的函数
如果您想附加函数而不命名它,则应该考虑<代码> AdvestEnter Listor <代码>或使用jQuery <代码>。(单击),函数({ })路< /P>
更新:
更新后,您的问题是总是检查正值。在以下情况下,力矩差将产生负值:
d1.diff(d2)
并且d1
早于d2
因此,您需要先Math.abs()
it您的代码片段包含jquery,只需获得如下值,$(“#date1”).val()
通过单独指定,为日期使用通用格式
函数比较(){
$(“#状态”).removeClass('redBg greenBg yellowBg');
var dateFormat=“MM-DD-YYYY”;
var firstDate=时刻($(“#date1”).val(),日期格式);
var secondDate=时刻($(“#date2”).val(),日期格式);
var diff=firstDate.diff(secondDate,'days');
控制台日志('s',差异);
如果(7 否则如果(diff您可以为firstDate和secondDate变量记录控制台吗?您也可以使用Math.abs将负差转换为正差。谢谢Taha。我还有一个问题,没有这个按钮,如何像ajax一样进行比较。您可以使用文本框的输入或更改事件来触发比较功能。很抱歉,您可以给出或引用任何测试吗请查看我的代码。我在Diff中做了简单的修改,但它不起作用。你能解决吗?我检查了代码段了吗?Textbox只更改了一次。请在Mohideennow处修复它。在调用函数之前,你没有删除应用类。$(“#status”)。removeClass('redBg greenBg yellowBg'));现在检查请看我的代码。我不能做差异运算。帮帮我