我有一个选择从'dd / mm / yy'格式的输入中添加天数以在另一个输入中显示结果,我试图这样做但这不起作用。
<input type="text" id="startdate" value="15/11/17">
<select name="Select1" id="days">
<option value="1">1 day</option>
<option value="2">2 days</option>
<option value="3">3 days</option>
</select>
<input type="text" id="fdate" value="">
$( "#days" ).change(function() {
var sta = $('#startdate').val()
var sel = parseInt($(this).val())
$('#fdate').val(sta+sel )
});
答案 0 :(得分:1)
使用setDate
与add the days
<强>演示强>
$("#days").change(function() {
var staItems = $('#startdate').val().split("/");
var date = new Date( Number(staItems[2]), Number(staItems[1])-1, Number(staItems[0]) );
date.setDate( date.getDate() + parseInt($(this).val()) );
$('#fdate').val( date.getDate() + "/" + (date.getMonth() + 1 ) + "/" + date.getYear() )
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="startdate" value="15/11/17">
<select name="Select1" id="days">
<option value="0">0 day</option>
<option value="1">1 day</option>
<option value="2">2 days</option>
<option value="3">3 days</option>
<option value="6">6 days</option>
<option value="7">7 days</option>
<option value="8">8 days</option>
</select>
<input type="text" id="fdate" value="">
答案 1 :(得分:1)
您应该使用Date javascript对象
$( "#days" ).change(function() {
var sta = $('#startdate').val().split('/');
// Note that JS treats date as mm/dd/yy
var date = new Date([sta[1], sta[0], sta[2]].join('/'));
var sel = parseInt($(this).val());
date = new Date(date.getTime() + 60*60*24*sel);
$('#fdate').val(date.getDaty() + '/' + date.getMonth() + '/' + date.getYear());
});
另外请考虑将年份显示更改为全年,原因相同[{3}}
答案 2 :(得分:1)
试试这个......
$( "#days" ).change(function() {
var dates = $('#startdate').val();
dates = dates.split('/');
var someDate = new Date(dates[1] +"/" + dates[0] + "/"+dates[2]);
var numberOfDaysToAdd = parseInt($(this).val());
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = dd + '/'+ mm + '/'+ y;
$('#fdate').val(someFormattedDate);
});
答案 3 :(得分:1)
问题:
'15/11/17' + 3
。这不会起作用解决方案:
我强烈建议您查看momentJS
$('#days').change(function() {
var sta = moment($('#startdate').val(), "MM-DD-YY");
var sel = parseInt($(this).val());
$('#fdate').val(sta.add(sel, 'days'));
});
答案 4 :(得分:1)
输入“#startdate”具有文本类型,如果您将“整数”相加,则结果不是您的目标。
您需要在第一个输入中使用type date,将其值转换为Date对象,并使用正确的函数添加一天。
Here您有关于Date对象的更多信息。
答案 5 :(得分:1)
纯粹的js方法 分开日期,得到一天, 拆分选定的值,得到整数 加上两个 使用更新日期再次创建日期 在输入框中更新它
document.getElementById("days").onchange = function() {
let inputValueParts = document.getElementById("startdate").value.split("/");
let daysToIncrement = document.getElementById("days").value.split(" ")[0];
let integerDate = parseInt(inputValueParts[1]);
let integerIncrement = parseInt(daysToIncrement);
integerDate += integerIncrement;
let increasedDate = inputValueParts[0] + "/" + integerDate + "/" +inputValueParts[2];
document.getElementById("fdate").value = increasedDate;
}