Javascript getDay() returns 错误的日期
Javascript getDay() returns wrong day
当我制作一个使用日期来确定其字段值的表单时,我遇到了以下问题。在我的表单中,我使用了一个带有一些选项的 'select' 输入和一个可以输入日期的字段。 'select' 输入中某个选项的值取决于输入的日期(该值表示价格,周末价格较高)。
起初我为日期字段使用了一个输入类型="date",并编写了一个javascript函数来获取星期几来确定周末,这工作得很好。但是当我实现 jQuery 日期选择器小部件时,输入类型似乎只有在我将其更改为 type="text" 时才有效。 getDay() 方法从这里开始到 return 错误的一天。这导致每当我选择日期时,它 return 的价格都是错误的,因为它没有选择正确的星期几。
我认为问题在于日期读取不正确,因为它 return 是字符串而不是日期,因此 return 是一个无效日期。我花了好几个小时寻找解决方案并尝试了几种可能的解决方案,但到目前为止它仍然不起作用。
这是用于检查日期的代码部分:
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
});
});
所以基本上我想要它做的是检查日期选择器输入的日期是否在周末(如果为真,则选项值 = 25,否则选项值 = 17.50)。请注意,该表格是用荷兰语书写的(即 id/class 姓名等)。
我不确定您是否使用了正确的方法从日期选择器中获取日期。在你的 checkDate()
函数中而不是这个
var inputdate = document.getElementById("tukdatum").value;
var tukdate = new Date(inputdate);
你可以使用
var tukdate = $("#tukdatum").datepicker("getDate");
这是因为getDate returns一个不需要使用new Date
解析的日期对象。
这是一个 JSBin - 查看控制台
当我制作一个使用日期来确定其字段值的表单时,我遇到了以下问题。在我的表单中,我使用了一个带有一些选项的 'select' 输入和一个可以输入日期的字段。 'select' 输入中某个选项的值取决于输入的日期(该值表示价格,周末价格较高)。
起初我为日期字段使用了一个输入类型="date",并编写了一个javascript函数来获取星期几来确定周末,这工作得很好。但是当我实现 jQuery 日期选择器小部件时,输入类型似乎只有在我将其更改为 type="text" 时才有效。 getDay() 方法从这里开始到 return 错误的一天。这导致每当我选择日期时,它 return 的价格都是错误的,因为它没有选择正确的星期几。
我认为问题在于日期读取不正确,因为它 return 是字符串而不是日期,因此 return 是一个无效日期。我花了好几个小时寻找解决方案并尝试了几种可能的解决方案,但到目前为止它仍然不起作用。
这是用于检查日期的代码部分:
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
});
});
所以基本上我想要它做的是检查日期选择器输入的日期是否在周末(如果为真,则选项值 = 25,否则选项值 = 17.50)。请注意,该表格是用荷兰语书写的(即 id/class 姓名等)。
我不确定您是否使用了正确的方法从日期选择器中获取日期。在你的 checkDate()
函数中而不是这个
var inputdate = document.getElementById("tukdatum").value;
var tukdate = new Date(inputdate);
你可以使用
var tukdate = $("#tukdatum").datepicker("getDate");
这是因为getDate returns一个不需要使用new Date
解析的日期对象。
这是一个 JSBin - 查看控制台