0

我有一个输入日期的文本框。我添加了复选框 todaysDate4SD 和 todaysDate4ED 以便当用户希望这些文本框之一成为今天的日期时,他们可以单击相应的复选框以便为他们填充它(他们不需要填写文本框今天的日期)。我将 ab alert 放在 populateTodaysDate() 函数中,所以我知道它没有到达那里。当谈到 JS 时,我是一个新手,所以我不确定它没有调用这个函数是什么语法错误。

<div id="form">
  <form>
    <p class="field">Start Date:<input type="text" id="start" name="start" /></p>   
    <p class="field"><input type="checkbox" id="todaysDate4SD" name="todaysDate4SD"
                            onclick="populateTodaysDate(todaysDate4SD,start);" />
    <p class="field">End Date:<input type="type" id="end" name="end" /></p>
    <p class="field"><input type="checkbox" id="todaysDate4ED" name="todaysDate4ED" 
                            onclick="populateTodaysDate(todaysDate4ED,end);" />
    <p class="field"><input type="checkbox" id="includeEndDate" name="includeEndDate" checked="true" />
    Include the end date in the calculation</p>
    <p class="submitbttn"><input type="button" value="Submit" onclick="calculate();" /></p>
  </form>

onclick populateTodaysDate 调用中的参数(即todaysDate4ED,end)是字符串。我试图传递 id 以便在函数中使用 document.getElementById(id) ...我之前在实际元素中尝试过 passind(通过将此 document.getElem... 放在 onclick 调用中,但那没有也不行)。

下面是我认为由于某种原因没有被调用的函数。它位于 html 页面头部的脚本标记中。

    function populateTodaysDate(checkbox, dateBox) {
        alert("I'm here!")
        if(checkBox.checked) {
            dateBox.value =  dateToString(new Date()).
        } else {
            dateBox.value = "";
        }
    }

警报并不重要,只是添加来看看我是否真的进入了这个功能......

...如果有人想查看 dateToString ...不应该是必要的(99.98% 确定这不是问题所在)

    function dateToString(d1) {
        var curr_year = d1.getFullYear();

        var curr_month = d1.getMonth() + 1; //Months are zero based
        if (curr_month < 10) {
            curr_month = "0" + curr_month;
        }

        var curr_date = d1.getDate();
        if (curr_date < 10) {
            curr_date = "0" + curr_date;
        }
        return curr_month + "/" + curr_date + "/" + curr_year;
    }
4

1 回答 1

3

您的复选框应如下所示:

<input type="checkbox" id="todaysDate4SD" name="todaysDate4SD"
                        onclick="populateTodaysDate(this,'start');" />

<input type="checkbox" id="todaysDate4ED" name="todaysDate4ED" 
                        onclick="populateTodaysDate(this,'end');" />

并更新您的功能:

function populateTodaysDate(checkbox, dateBox) {
    dateBox = document.getElementById(dateBox);
    if(checkBox.checked) {
        dateBox.value =  (new Date()).toString("yyyy-MM-dd HH:mm:ss");
    } else {
        dateBox.value = "";
    }
}
于 2013-05-25T16:22:22.267 回答