2015-02-23 105 views
0

當我製作一個使用日期來確定它的字段值的表單時,我遇到了以下問題。在我的表單中,我使用了一個「選擇」輸入和一些可以輸入日期的字段。 「選擇」輸入中某個選項的值取決於輸入的日期(該值表示週末價格較高的價格)。Javascript getDay()返回錯誤的日子

起初我對日期字段使用了一個輸入類型=「日期」,並寫了一個javascript函數來獲取星期幾以確定週末,這工作得很好。但是當我實現了jQuery datepicker小部件時,輸入類型似乎只在將其更改爲type =「text」時才起作用。從這裏getDay()方法開始返回錯誤的一天。這導致每當我選擇一個日期時,它就會返回錯誤的價格,因爲它不會選擇一週中的正確日期。

我認爲問題是日期不能正確讀取,因爲它作爲字符串返回而不是日期,因此返回無效日期。我花了好幾個小時尋找解決方案並嘗試了幾種可能的解決方案,但到目前爲止它仍然無法工作。

下面是用於檢查的日期代碼的一部分:

HTML:

<input type="text" id="tukdatum" class="reservinput" value="" name="voorkeursdatum" maxlength="10" onchange="calculateTotal()" /> 

<select id="activiteit" name="activiteit" onchange="calculateTotal()"> 
    <option value="bowling" id="bowling">Bowling bij Pins&Pints € 17.50 p.p. (€ 25,- in de weekenden)</option> 
</select> 

的Javascript:

var tuk_activiteiten = new Array(); 
tuk_activiteiten["bowling"]=17.50; 
tuk_activiteiten["bowlingWE"]=25; 

function checkDate() 
{ 
    var inputdate = document.getElementById("tukdatum").value; 
    var tukdate = new Date(inputdate); 
    if (tukdate.getDay() == 6 || tukdate.getDay() == 0) 
    { 
     document.getElementById("bowling").value = "bowlingWE"; 
    } 
    else { 
     document.getElementById("bowling").value = "bowling"; 
    } 
} 

的jQuery的日期選擇器:

$(function(){ 
    $.datepicker.setDefaults(
    $.extend($.datepicker.regional[ 'nl' ]) 
); 
    $('#tukdatum').datepicker({ 
     dateFormat: 'dd-mm-yy', 
     minDate: '+1', 
     showOtherMonths: true, 
     selectOtherMonths: true 
    }); 
}); 

所以basicall我希望它做的是檢查日期選擇器輸入的日期是否在週末(如果爲真,則選項值= 25,否則選項值= 17.50)。請注意,該表格是用荷蘭語(即ID /班級名稱等)編寫的。

+2

*不*返回哪些?包含一些實際發生的事情和期望的事例很好。 – 2015-02-23 21:22:06

+0

把整個事情細化到相關部分也是一件好事。最好用一個片段或小提琴。唯一感興趣的部分是'checkDate'部分和'tukdatum'的html,對吧? – 2015-02-23 21:31:01

+0

@DaveNewton在我使用日期選擇器的那一刻,它返回一個無效的日期,這意味着它將值25綁定到一週的錯誤日期。它應該將值25綁定到星期六和星期日,以及一週中所有其他日期的值爲17.50。現在它將價值17.50綁定到我選擇的幾乎所有日期,除了某些日期(例如2015年3月1日星期日,2015年3月5日星期四)。 – MozillaFox 2015-02-23 21:50:07

回答

3

我不確定您是否使用正確的方法從datepicker獲取日期。在你checkDate()功能,而不是這個

var inputdate = document.getElementById("tukdatum").value; 
var tukdate = new Date(inputdate); 

可以使用

var tukdate = $("#tukdatum").datepicker("getDate"); 

這是因爲GETDATE返回的日期對象,它不需要使用new Date解析。

這裏是一個JSBin - 退房控制檯

Documentation here

+0

似乎沒有爲我工作,返回一個「無效的日期」。任何想法爲什麼? – MozillaFox 2015-02-23 22:06:35

+0

@MozillaFox'無效日期'是您分配給'var tukdate'的'new Date'代碼的問題。由於getDate返回一個'Date'對象(在文檔中返回類型在右上角),所以不需要'var tukdate = new Date(inputdate);'。您可以將其更改爲'var tukdate = $(「#tukdatum」)。datepicker(「getDate」);'並將inputdate全部排除在外。我編輯了我的答案,以反映這 – Deepak 2015-02-23 22:16:40

+0

好吧我試過,出於某種原因只返回「[object Object]」,可能是因爲它試圖從文本字符串中獲取日期? – MozillaFox 2015-02-23 22:30:33