【问题标题】:asp.net update textbox via JS based on other textbox valueasp.net 根据其他文本框值通过 JS 更新文本框
【发布时间】:2013-05-04 02:29:01
【问题描述】:

我的 asp.net 页面上有两个文本框。 一个是今天的日期,一个是从现在起一年后的到期日期。

所以如果第一个文本框包含 23/04/2013

我希望第二个文本框自动填充 23/04/2014

如何将到期日期的日期更新为从现在起正好一年(无回发) 我怀疑需要一些 JS 对吗?

【问题讨论】:

    标签: c# javascript asp.net datetime textbox


    【解决方案1】:

    这个答案使用 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));
            }
        });
    });
    

    工作示例:http://jsfiddle.net/6vs5y/

    【讨论】:

      【解决方案2】:
      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 中。

      【讨论】:

      • 谢谢,但我知道按钮技巧。我需要它做同样的事情,但没有任何按钮/点击。所以当用户离开 textbox1 时, textbox2 应该自动更新。我也希望 JS 计算新日期。这可能吗?
      • 当然只是在我对 onblur 的修订答案中更改 onkeyup
      • 好吧,这有道理,但是如何在 JS 中处理 Date() 以便我可以从 textbox1 向日期添加 1 年,然后在 textbox2 中显示?
      • 已添加,正如我所说,使用 Date 会很好,但从我对 API 的简要了解来看,似乎没有办法为 parse() 指定日期格式。
      • 谢谢。会试一试:)
      猜你喜欢
      • 2023-03-20
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多