在Moment Date中添加6个月并在每个循环中填充字段

时间:2014-12-14 17:19:29

标签: jquery date momentjs

我有一个作为时刻对象创建的日期,在这种情况下它是15 Jan 2015我有一组输入字段,其类别为periodDate我需要做的是添加6个月到源日期并使用值填充输入。

#periodDate1填充了17 Dec 2014#periodDate2的值为moment_next_coupon_date

var moment_next_coupon_date = moment('15 Jan 2015');

$(_clsPeriodDate).each(function() {
    $(this).not("#periodDate1").not('#periodDate2').val(moment_next_coupon_date.add(6, 'M').format('DD MMM YYYY'));
});

这是有效的,但日期从2015年跳到2016年,例如输出的下两个日期是15 Jul 201615 Jan 2017,从那时起它开始工作并增加日期但是6个月预期

任何人都可以告诉我为什么会这样,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为无论您的add条件是否得到满足,都会在您的时刻对象上调用.not;只是因为你在调用val on的jQuery set可能是空的,这并不意味着你传递给val的表达式没有被评估。因为瞬间物体变异......

更简单,更直接的方法是简单地使用if

var moment_next_coupon_date = moment('15 Jan 2015');

$(_clsPeriodDate).each(function() {
    if (this.id !== "periodDate1" && this.id !== "periodDate2") {
        $(this).val(moment_next_coupon_date.add(6, 'M').format('DD MMM YYYY'));
    }
});

...或者先过滤掉它们:

var moment_next_coupon_date = moment('15 Jan 2015');

$(_clsPeriodDate).not("#periodDate1, #periodDate2").each(function() {
    $(this).val(moment_next_coupon_date.add(6, 'M').format('DD MMM YYYY'));
});