【问题标题】:Pre-populating a form default value with a calculated value使用计算值预填充表单默认值
【发布时间】:2009-08-09 23:50:41
【问题描述】:

我需要使用计算日期填充文本框,但无法显示计算值。 例如文本框应默认为今天的日期 + 5 天。 我有 java 脚本进行计算并且它们正在工作,我知道我使用文本框的“value”属性,但不确定将 java 脚本 var 解析为 value 属性的语法。

var currentTime = new Date()
var day = currentTime.getDate() +5
var year = currentTime.getFullYear()
var month = currentTime.getMonth() + 1;
var calcdate = day + "/" + month + "/" + year;

<input type="text" name="T1" size="20" id="sub_date" value="<document.write(subdate)">

【问题讨论】:

    标签: javascript html forms


    【解决方案1】:

    我可能会先获取您的 calcdate(和相关变量)并将其粘贴到函数中:

    function calculate_date() {
      currentTime = new Date();
      day         = currentTime.getDate() + 5;
      year        = currentTime.getFullYear();
      month       = currentTime.getMonth() + 1;
      calcdate    = day + "/" + month + "/" + year;
      return calcdate;
    }
    

    我们可以设置另一个小函数,将日期实际插入所需元素:

    function prepopulate_date() {
      document.getElementById("sub_date").setAttribute('value', calculate_date());
    }
    

    以上内容与您之前想要做的相同,但方式更简洁。

    最后,我们需要实际调用这个函数。到目前为止,我们只设置了为我们完成工作的函数,我们实际上并没有告诉它们运行。最重要的是,在尝试向其中插入任何内容之前,我们需要确保该元素确实“存在”。一个常见的问题是,如果您不在加载或“就绪”事件(据我所知,您仅在使用外部 javascript 库时获得的事件)上执行此操作,您将尝试将值插入尚不存在的元素,因为浏览器没有时间加载页面的整个 html 内容。所以我们可以这样做:

    window.onload = prepopulate_date;
    

    如果您愿意,可以下载example

    我希望这会有所帮助。干杯。

    【讨论】:

    • 真棒就像一种享受。非常感谢您不仅提供了解决方案,还提供了出色的解释。干杯,戴夫
    【解决方案2】:
    document.getElementById('sub_date').value(calcdate);
    

    或者类似的东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2021-02-06
      相关资源
      最近更新 更多