【发布时间】:2014-02-25 05:22:39
【问题描述】:
所以前提是有一个表示开始日期的文本框,然后另一个输入框onchange 应该运行一个javascript函数,将任期框中的月份值添加到合同开始日期并给出合同结束日期。
我尝试了以下代码:
<form name="FormName">
Contract Start Date: <input type="text" name="Start" value="<?php echo date("Y/m/d"); ?>" onchange="myFunction()" />
<br />
Tenure (Months): <input type="text" name="Months" value="" onchange="myFunction()" />
<br />
Contract End Date: <input type="text" name="TextBoxName" value="" />
</form>
<script>
function myFunction()
{
var val = document.forms["FormName"].elements["Months"].value;
var d = new Date(document.forms["FormName"].elements["Start"].value);
var year = d.getFullYear();
var month = d.getMonth() + val;
var day = d.getDate();
document.forms["FormName"].elements["TextBoxName"].value = year + "/" + month + "/" + day;
}
</script>
但这似乎并没有将其作为日期对象处理,我得到的值类似于 2014/22/31 ,其中 22 是月份,显然应该延续到年份组件。
我猜当 var 被定义为单独的年、月、日部分时,它会将其视为字符串...我需要它返回格式为 PHP 中 date("Y/m/d"); 的日期.
任何帮助将不胜感激!
【问题讨论】:
-
尝试从更新的值构造一个新的日期
-
您为什么要在您的月份中添加 + val?我认为这是问题所在。
-
getMonth() 返回一个数字 (0-11),您只是将另一个数字添加到该数字,因此 12 月日期(月份数 11)加上 10 个月会得到 21。它不会调整 Date 对象,为此使用setMonth()。
标签: javascript php