【问题标题】:when enter a date in text box start date automatically Show dates of next one year in other textbox endtextbox当在文本框中输入日期时自动开始日期在其他文本框中显示下一年的日期 endtextbox
【发布时间】:2015-04-10 18:13:40
【问题描述】:

我的 asp.net 中有两个使用 c# 代码的文本框

HTML 代码

       <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>

【问题讨论】:

    标签: javascript c# jquery asp.net date


    【解决方案1】:

    这是你的身份证。 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>
    

    【讨论】:

    • 我不明白你的意思,你能解释一下吗
    • 这里,我们把它移到一个聊天中,以防止太多来回。 chat.stackoverflow.com/rooms/74965/…
    • 不允许我必须在 Stack Overflow 上拥有 20 声望才能在聊天中交谈
    • 好的。您将不得不对此进行更多调试,以查看您的 jquery 事件是否正在触发。注释掉你所有的脚本内容并为 .blur 函数发送警报。如果你明白了,请告诉我。
    • 将您的 .blur 函数更改为此,如果您收到警报,请告诉我。
    【解决方案2】:

    你可以用一个更简单的函数来解决这个问题: var dateParts=value.split('/'); $('#TxtEndDate').val(dateParts[0]+'/'+dateParts[1]+'/'+(parseInt(dateParts[2])+1)); 要使用 javascript 访问服务器控件,您需要这样做$('#&lt;%=TextStartDate.ClientId%&gt;'),因为 asp.net 控件 ID 是在运行时生成的。 还要将 AutoPostBack 设置为 false,否则每次 TextBox 失去焦点时都会刷新页面

    【讨论】:

    • 我不明白你的意思,你能解释一下吗
    • 当一个 asp 控件被转换为 HTML 时,元素的 id 是在运行时生成的。例如&lt;asp:TextBox ID="TextStartDate" runat="server" Width="177px" AutoPostBack="True" style="height: 22px"&gt;&lt;/asp:TextBox&gt; 将呈现为&lt;input id="Form1_TextStartDate" &gt;&lt;/input&gt;,因此 id 与您使用的不同
    • 我应该把 $('#') 放在哪里??
    • 这是我的例子的同义词。替换您的 jquery 调用,如我的示例中所示。
    • @fischgeek 我改了但还是不行我不知道是什么问题,没有错误
    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多