繁体   English   中英

jQuery根据最近的输入值在许多输入上设置不同的日期

[英]jQuery set different date on many inputs based on the nearest input value

我有许多日期类型输入(一个用于初始日期,一个用于每个阶段的新日期)和一个数字类型输入,它应该定义基于“旧日期”添加到所有“新日期”输入的天数最近输入的值。 现在它根据第一个“旧日期”输入值更改所有日期。

 function calcNewDate() { var addDays = parseInt($('#chdn').val()); $('.newDate').val(formatDate(new Date($('.oldDate').val()).setDate(new Date($('.oldDate').val()).getDate() + addDays))); } function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Days to add to each newDate: <input id="chdn" type="number" onchange="calcNewDate();" onkeyup="calcNewDate();" /> <div class="stage"> <h4>Stage #1</h4> Old date - <input class="oldDate" type="date" value="2017-06-01" disabled> New date - <input class="newDate" type="date" disabled> </div> <div class="stage"> <h4>Stage #2</h4> Old date - <input class="oldDate" type="date" value="2017-08-15" disabled> New date - <input class="newDate" type="date" disabled> </div> <!-- here could be more stages -->

解决方案:

$('.newDate').each(function(){
$(this).val(formatDate(new Date($(this).prevAll('.oldDate').val()).setDate(new Date($(this).prevAll('.oldDate').val()).getDate() + parseInt($('#chdn').val()))));
});

感谢@Zenoo

由于您有多个.newDate ,您需要遍历它们并使用 jQuery .each().prevAll()方法访问每个人的.oldDate

$('.newDate').each(function(){
  $(this).val(formatDate(new Date().setDate(new Date($(this).prevAll('.oldDate').val()).getDate() + addDays)));
});

演示:

 function calcNewDate() { const addDays = +$('#chdn').val(); $('.newDate').each(function(){ $(this).val(formatDate(new Date().setDate(new Date($(this).prevAll('.oldDate').val()).getDate() + addDays))); }); } function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Days to add to each newDate: <input id="chdn" type="number" onchange="calcNewDate();" onkeyup="calcNewDate();" /> <div class="stage"> <h4>Stage #1</h4> Old date - <input class="oldDate" type="date" value="2017-06-01" disabled> New date - <input class="newDate" type="date" disabled> </div> <div class="stage"> <h4>Stage #2</h4> Old date - <input class="oldDate" type="date" value="2017-08-15" disabled> New date - <input class="newDate" type="date" disabled> </div> <!-- here could be more stages -->

设置值

[英]Set the value of <input type=“date”… in jquery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM