【发布时间】:2013-05-04 02:29:01
【问题描述】:
我的 asp.net 页面上有两个文本框。 一个是今天的日期,一个是从现在起一年后的到期日期。
所以如果第一个文本框包含 23/04/2013
我希望第二个文本框自动填充 23/04/2014
如何将到期日期的日期更新为从现在起正好一年(无回发) 我怀疑需要一些 JS 对吗?
【问题讨论】:
标签: c# javascript asp.net datetime textbox
我的 asp.net 页面上有两个文本框。 一个是今天的日期,一个是从现在起一年后的到期日期。
所以如果第一个文本框包含 23/04/2013
我希望第二个文本框自动填充 23/04/2014
如何将到期日期的日期更新为从现在起正好一年(无回发) 我怀疑需要一些 JS 对吗?
【问题讨论】:
标签: c# javascript asp.net datetime textbox
这个答案使用 jQuery 来读取日期、解析部分并在年份中添加一个。但是,它不会检查输入日期的有效性,因此在第一个文本框中输入字母会产生“NaN/NaN/NaN”的日期。您可以将其与 jQuery UI 的 DatePicker 结合使用,以确保输入是有效日期。在这种情况下,您将使用change 事件而不是keyup。
HTML:
<input id="today" type="text" />
<input id="future" type="text" />
Javascript:
$(document).ready(function () {
$('#today').keyup(function () {
var today = new Date($(this).val());
if (today != NaN) {
var dd = today.getDate();
var mm = today.getMonth();
var y = today.getFullYear();
$('#future').val(dd + '/' + mm + '/' + (parseInt(y)+1));
}
});
});
【讨论】:
function update(sourceTBId, targetTBId){
document.getElementById(targetTBId).value = document.getElementById(sourceTBId);
}
<input type='button' onclick="update('<%=textbox1.ClientID%>', '<%=textbox2.ClientID%>')"/>
其中 textbox1 是源,2 是目标。
对不起,你自动说...
在后面的代码中这样做
textbox1.Attributes.Add("onkeyup", "update('"+textbox1.ClientID+"', '"+textbox2.ClientID+"')");
至于日期,如果您确定它将是 dd/mm/yyyy,那么应该这样做(可能有更优雅/更好的方法 - 如果格式错误,这将失败 - 这也是所有空气代码,请检查)
function update(sourceTBId, targetTBId){
var dateString = document.getElementById(sourceTBId);
var dateParts = dateString.split("/");
var dd = dateParts[0];
var mm = dateParts[1];
var yy = 1 + parseInt(dateParts[2]);
document.getElementById(targetTBId).value = dd+'/'+mm+'/'+yy;
}
使用任何日期解析和格式化方法会好得多,但我还不够熟悉,无法快速说出它们是否存在于 JS 中。
【讨论】: