我知道有很多关于此主题的文章,但是我无法根据自己的需求使用它们中的任何文章。目的是在日期选择器中使用变量seconddivval并显示可用日期。在另一个函数中使用函数中的Javascript变量
我有一个隐藏输入一个PHP foreach循环
<td class='myArray'>
<input type="hidden" class="activedates" value="<?php echo "['".implode("','",$newactivedate)."'];"; ?>">
当myArray的点击,这个JavaScript函数返回上面的输入值
$('.myArray').click(function() {
seconddivval = $(this).find('input.activedates').val();
});
上述所有工作正常,但我需要使用变量seconddivval in this function
function available(date) {
dmy = date.getDate() + '-' + (date.getMonth()+1) + '-' +
date.getFullYear();
if ($.inArray(dmy, seconddivval) != -1) {
return [true, ""];
} else {
return [false,""];
}
}
$(".datefromavailable").datepicker({
minDate: 0,
dateFormat: 'M dd, yy',
changeMonth: true,
changeYear: true,
numberOfMonths: 2,
beforeShowDay: available,
onClose: function (selectedDate) {
$(".datetoavailable").datepicker("option", "minDate", selectedDate);
var days_to_add = 365, // SET DAYS HERE
parsed_date = new Date($.datepicker.parseDate('M dd, yy', selectedDate)),
add_year = new Date(parsed_date.setDate(parsed_date.getDate() + days_to_add)),
formatted_date = $.datepicker.formatDate('M dd, yy', add_year);
$(".datetoavailable").datepicker('option', 'maxDate', formatted_date);
$(this).parent().next().children().focus();
setTimeout(function() {
$(this).next().datepicker('show')
},0);
}
});
$(".datetoavailable").datepicker({
minDate: 0,
dateFormat: 'M dd, yy',
changeMonth: true,
changeYear: true,
numberOfMonths: 2,
beforeShowDay: available,
maxDate: '+1y'
});
});
我相信这很简单,但我找不到实现目标的方法。
我试过了我能想到的一切。我声明了函数外的变量,我删除了var,我加了window.seconddivval;到点击功能,我加在函数结束返回,...
我甚至尝试了下面,我认为这是正确的方式。它工作正常,如果我只有一个数组,但如果我有一个以上的数组,它只返回第一个数组:
var seconddivval = <?php echo '["' . implode('", "', $newactivedate) . '"]'; ?>;
这foreach循环也适用,但也返回第一个数组:
var seconddivval = new Array();
<?php foreach($newactivedate as $key => $val){ ?>
seconddivval.push('<?php echo $val; ?>');
<?php } ?>
我在做什么错?
编辑
这里是如何
$newactivedate
形成:
$sqlactivedate = $bddp->prepare("SELECT (nullif(Adate1,'')),(nullif(Adate2,'')),(nullif(Adate3,'')),(nullif(Adate4,'')),(nullif(Adate5,'')),(nullif(Adate6,'')),(nullif(Adate7,'')),(nullif(Adate8,'')),(nullif(Adate9,'')),(nullif(Adate10,''))
FROM prices WHERE id_prices = '$id_prices'");
$sqlactivedate->execute();
$rowactivedate = array();
while ($rowactivedate = $sqlactivedate -> fetch(PDO::FETCH_ASSOC)) {
$newactivedate = array();
$newactivedate = array_filter($rowactivedate);
这些都是从数据库中取出的2行:
Room1 → {"(nullif(Adate1,''))":"15-8-2017","(nullif(Adate2,''))":"16-8-2017","(nullif(Adate3,''))":"17-8-2017","(nullif(Adate4,''))":"18-8-2017","(nullif(Adate5,''))":"20-8-2017","(nullif(Adate6,''))":"21-8-2017","(nullif(Adate7,''))":"22-8-2017","(nullif(Adate8,''))":"25-8-2017","(nullif(Adate9,''))":"26-8-2017","(nullif(Adate10,''))":"28-8-2017"}
Room2 → {"(nullif(Adate1,''))":"1-8-2017","(nullif(Adate2,''))":"2-8-2017","(nullif(Adate3,''))":"4-8-2017","(nullif(Adate4,''))":"5-8-2017","(nullif(Adate5,''))":"28-8-2017","(nullif(Adate6,''))":"29-8-2017","(nullif(Adate7,''))":"4-9-2017","(nullif(Adate8,''))":"5-9-2017","(nullif(Adate9,''))":"6-9-2017","(nullif(Adate10,''))":"7-9-2017"}
你在哪里调用函数'available' – Spectarion
在日期选择器:$( “datefromavailable”)日期选择器({ 的minDate:0, DATEFORMAT: 'M DD,YY', changeMonth:真实, changeYear:真实, NUMBEROFMONTHS:2, beforeShowDay:可用, – Daniela
为什么不'如果($ .inArray(DMY,$(本).find('输入.activedates')。val())!= -1){'?为什么用户需要点击'myArray'? – Spectarion