2013-05-25 142 views
0

我有一個輸入日期的文本框。我已經添加了複選框todaysDate4SD和todaysDate4ED,以便當用戶希望這些文本框之一是今天的日期時,他們可以點擊相應的複選框爲了填充它們(他們不需要填寫文本框今天的日期)。我在populateTodaysDate()函數中放置了一個alert,所以我知道它沒有到達那裏。當談到JS時,我是一個新手,所以我不確定什麼語法錯誤,它不是調用這個函數。這個調用html函數的javascript函數有什麼問題

<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)...我在實際元素之前嘗試通過(通過將此document.getElem ...在onclick調用中,但didn也沒有工作)。

以下是我相信不是因爲某種原因而被調用的函數。它位於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; 
    } 
+0

添加您的js代碼 –

+0

@yvytty那就是我希望它是調用函數的名稱,但事實並非如此。警報會讓我知道它正在進入。我將在第二個 – Nick

+0

中添加我的js代碼,我建議你用螢火蟲檢查一些錯誤 –

回答

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 = ""; 
    } 
} 
+0

準確地說我的答案,只是更快一點。 +1 – Matthew

+0

這是一個小提琴這個soulution:http://jsfiddle.net/TK5EG/ @claustrofob小修正:改變複選框複選框在函數參數,否則會拋出一個「複選框未定義」錯誤 – BeNdErR

+0

我明白你的解決方案..類似於我以前的嘗試,但我有雙引號結束。如果雙引號圍繞屬性值,它是否需要單一? ...只是尋找推理。 – Nick