Javascript getDay()返回错误的一天

时间:2015-02-23 21:20:08

标签: javascript jquery date datepicker

由于我正在制作一个使用日期来确定其字段值的表单,因此我遇到了以下问题。在我的表单中,我使用带有一些选项的“选择”输入和一个可以输入日期的字段。 “选择”输入中某个选项的值取决于输入的日期(该值代表价格,在周末更高)。

首先,我使用输入类型=“日期”作为日期字段,并编写了一个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 for datepicker:

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

基本上我想要它做的是检查datepicker输入的日期是否在周末(如果为true,则选项值= 25,否则选项值= 17.50)。请注意,表格是用荷兰语写的(即id /类名等)。

1 个答案:

答案 0 :(得分: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