【问题标题】:Dynamically add one year to input type month based on another input type month using Javascript使用Javascript根据另一个输入类型月份动态添加一年到输入类型月份
【发布时间】:2014-03-05 07:01:40
【问题描述】:

我有两种输入类型的月份。我想要发生的是,当我在第一个字段中输入日期时,第二个字段将自动填充同月和前一年。如何使用 javascript 实现这一点?谢谢。

Start date: <input type='month' name='fromdate'> to <input type='month' name='deadline'>

注意:我需要使用输入类型月份,请不要向我推荐我使用jquery的日期选择器,因为它使用文本框。

【问题讨论】:

  • 可以看看moment.js
  • 您能否提供输入日期和预期输出的示例?
  • @ucdream - 检查这个:jsfiddle.net/7FAjy。虽然我确信 javascript 代码还有很长的路要走。

标签: javascript html


【解决方案1】:

以下是您可以达到所需目的的代码

<script>
function getDateAhead()
{
    var str = document.getElementById('fromDate').value;
    var res = str.split("-");
    var newdate = (parseInt(res[0])+1)+"-"+res[1]
    console.log(str);
    console.log(newdate);
    document.getElementById('toDate').value = newdate;
}
</script>
<input type="month" id="fromDate" onChange="getDateAhead()"/>
<input type="month" id="toDate"/>

更新

<script>
function getDateAhead()
{
    var str = document.getElementById('fromDate').value;
    var res = str.split("-");
var year = parseInt(res[0])+1;    
var month = parseInt(res[1])-1;
    if (month <= 9 && month > 0 )
    {
        month = "0"+month;
    }
    else if (month == 0)
    {
        month = "12";  
        year = year - 1;
    }
    var newdate = year+"-"+month;
    console.log(str);
    console.log(newdate);
    document.getElementById('toDate').value = newdate;
}
</script>
<input type="month" id="fromDate" onChange="getDateAhead()"/>
<input type="month" id="toDate"/>

工作Demo

【讨论】:

  • 是的。就是这样,但是你能把这个月减一吗?例如,我的输入是 2014 年 3 月,下一个字段是 2015 年 2 月。如果您输入,我会将您的答案标记为正确。
  • 如果第一个字段是January 2014,您想要在第二个字段中显示什么? December 2014January 2015
  • 例如,如果第一个字段是 2014 年 1 月,则为 2014 年 12 月。如果第一个字段为 2014 年 3 月,则第二个字段为 2015 年 2 月。
  • 现在看看这是你想要的吗?
  • 您可以通过 valueAsNumber 来简化函数,例如 function getDateAhead() { document.querySelector('#toDate').valueAsNumber = document.querySelector('#fromDate').valueAsNumber + 11; }
【解决方案2】:

这个JS使用日期对象来计算deadline。 截止日期始终是下一年上个月的最后一天。 deadline 包含一个带有截止日期的完整日期对象,以供进一步使用。

document.getElementsByName('fromDate')[0].addEventListener('change', function (e) {
    var fromDate = new Date(e.target.value);
    var deadline = new Date(fromDate.getFullYear(), fromDate.getMonth(), fromDate.getDate()-1);
    document.getElementsByName('deadline')[0].value = deadline.getFullYear() + '-' + ((deadline.getMonth()+1).toString().length < 2 ? '0' + (deadline.getMonth()+1).toString() : deadline.getMonth()+1);
});

JSfiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多