我 asp.net 里有两个使用 c# 代码的文本框
网页代码
<tr>
<td></td>
<td style="text-align: right"><asp:TextBox ID="TxtEndDate" runat="server"
Width="177px" AutoPostBack="True" style="height: 22px"></asp:TextBox>
</td>
<td style="text-align: right">end date</td>
<td style="text-align: right">
<asp:TextBox ID="TextStartDate" runat="server" Width="177px"
AutoPostBack="True" style="height: 22px"></asp:TextBox></td>
<td style="text-align: right; direction: rtl;">
start date
</td>
</tr>
我希望当我在第一个文本框(TxtStartDate)中以dd/mm/yyyy输入日期时,它将通过在上面输入的日期中添加加一年来自动填充第二个文本框(TxtEndDate)。
我试过这个JavaScript,但它不起作用
<script type="text/javascript">
$('#TextStartDate').blur(function () {
var value = $(this).val();
var regex = /^d{2}/d{2}/d{4}$/;
if (regex.test(value)) {
var myDate = new Date(Date.parse(reformat(value)));
var year = myDate.getYear() + 1;
var month = myDate.getYear() + 1;
if (month < 10) {
month = '0' + month;
}
var day = myDate.getDate();
if (day < 10) {
day = '0' + day;
}
$('#TxtEndDate').val(day + '/' + month + '/' + year);
} else {
alert('invalid date');
// this will prevent from leaving the input until the date is correct
$(this).focus();
}
});
</script>
这是你的身份证。 ASP.NET 劫持您的 ID 并在上面添加内容。将所有 jquery id 调用更改为
$("[id*=TxtStartDate]")
$("[id*=TxtEndDate]")
因此,在您的原始脚本中,执行以下操作:
<script>
$('[id*=TextStartDate]').blur(function () {
var value = $(this).val();
var regex = /^d{2}/d{2}/d{4}$/;
if (regex.test(value)) {
var myDate = new Date(Date.parse(reformat(value)));
var year = myDate.getYear() + 1;
var month = myDate.getYear() + 1;
if (month < 10) {
month = '0' + month;
}
var day = myDate.getDate();
if (day < 10) {
day = '0' + day;
}
$('[id*=TxtEndDate]').val(day + '/' + month + '/' + year);
} else {
alert('invalid date');
// this will prevent from leaving the input until the date is correct
$(this).focus();
}
});
</script>
你可以用一个更简单的函数来解决这个问题:
var dateParts=value.split('/');
$('#TxtEndDate').val(dateParts[0]+'/'+dateParts[1]+'/'+(parseInt(dateParts[2])+1));
要使用 javascript 访问服务器控件,您需要执行此操作$('#<%=TextStartDate.ClientId%>')
因为 asp.net 控件 ID 是在运行时生成的。还要将自动回发设置为 false,否则每次其中一个文本框失去焦点时都会刷新页面