将天数添加到日期 未捕获类型错误:getDate 不是一个函数



我正在从输入元素中获取值并将其转换为日期格式mm/dd/yyyy,然后我正在添加一些日期,但我得到未捕获的类型错误:dt_cl.getDate 不是一个函数。

$('#dt_input').change(function() {
var dep_dt = $(this).val();
$('#eff_input').val(dep_dt);
var eff_dt = new Date(dep_dt);
var dt_cl = (eff_dt.getMonth() + 1) + '/' + eff_dt.getDate() + '/' +  eff_dt.getFullYear();
var exp_dt = new Date().setDate(dt_cl.getDate()+364);
});

.HTML

<input type="text" id="dt_input">
<input type="text" id="eff_input">

问题是dt_cl在这里被初始化为字符串:

var dt_cl = (eff_dt.getMonth() + 1) + '/' + eff_dt.getDate() + '/' +  eff_dt.getFullYear();

然后你在这里打电话给getDate()

var exp_dt = new Date().setDate(dt_cl.getDate()+364);

字符串没有getDate()方法。您需要根据字符串创建一个新日期,然后它将起作用。

仅供参考:你们许多人希望第一个字段是:<input type="date">以确保输入是有效的日期格式。

$('#dt_input').change(function() {
var dep_dt = $(this).val();
$('#eff_input').val(dep_dt);
var eff_dt = new Date(dep_dt);
// dt_cl is being set to a string here:
var dt_cl = (eff_dt.getMonth() + 1) + '/' + eff_dt.getDate() + '/' +  eff_dt.getFullYear();

// So, you need to take that string and make a new Date from it and then
// you can call .getDate() on that new date.
var exp_dt = new Date().setDate(new Date(dt_cl).getDate() + 364);

// The result can be seen by making yet another date using the previous one
console.log(new Date(exp_dt));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="date" id="dt_input">
<input type="text" id="eff_input">

最新更新