在文本框中输入日期时 开始日期 自动在其他文本框中显示下一年的日期 结束文本框.



我 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,否则每次其中一个文本框失去焦点时都会刷新页面

最新更新