我有一个作为时刻对象创建的日期,在这种情况下它是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 2016
和15 Jan 2017
,从那时起它开始工作并增加日期但是6个月预期
任何人都可以告诉我为什么会这样,以及如何解决这个问题?
答案 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'));
});