我有 start_date datepicker,在 date_result 文本字段显示一些计算结果并且工作正常后,这里是代码:
jQuery(document).ready(function($) {
$('start_date, #week_number, #year_number, #month_number').change(function() {
var yr = $('#year_number').val() * 365;
var wk = $('#week_number').val() * 7;
var days = yr + wk;
var endDate = new Date($('#start_date').val());
endDate.setDate(endDate.getDate() + Number(days));
$('#date_result').val(endDate.getFullYear() + '-' + (endDate.getMonth() + 1) + '-' + endDate.getDate());
});
});
以下是:Fiddle
问题: date_result输入值为空,如何将此值设置为计算日期?
<input type="text" value="" size="20" name="form[date_result]" id="date_result">
答案 0 :(得分:0)
在Javascript中添加月份通常可能无法始终按预期工作,因为某些方案和边缘情况可能会导致意外结果。
例如,setMonth()
函数只接受0-11之间的月份值,并且还接受day参数,并且当使用此范围之外的值时可以执行一些有趣的事情:
如果您指定的参数超出预期范围,
setMonth()
尝试更新Date
对象中的日期信息 因此。例如,如果您对monthValue
使用15,则年份将为 增加1,将使用3个月。
考虑使用特定日期的资料库
我的建议是考虑使用像Moment.js或Date.js这样的库,这些库专为处理此类行为而设计,可能会让您的代码更容易阅读:
$('#start_date, #month_number').change(function() {
var months = $('#month_number').val();
// Get your date as a moment (specifying the format you want to parse in)
var end = moment($('#start_date').val(),"YYYY-MM-DD");
// Add your months
end.add(Number(months),'months');
// You can even ease formatting (along with output format)
$('#end_date').val(end.format('YYYY-MM-DD'));
});
示例强>
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/momentjs/2.10.6/moment-with-locales.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<input type="date" id="start_date">
<select id="month_number">
<option value="0">Number of months to add</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<input type="text" id="end_date" placeholder="End Date">
<script>
$(function() {
$('#start_date, #month_number').change(function() {
var months = $('#month_number').val();
// Get your date as a moment
var end = moment($('#start_date').val(), "YYYY-MM-DD");
// Add your months
end.add(Number(months), 'months');
// You can even ease formatting
$('#end_date').val(end.format('YYYY-MM-DD'));
});
});
</script>
</body>
</html>
&#13;
答案 1 :(得分:0)
jsFiddle删除name属性并尝试一次
请打开开发者控制台以查看日志
foreach($email as $key=>$emails)
{
if($emails == "")
unset($email[$key]);
}