このトピックに関する記事はたくさんありますが、私のニーズにそれらを使用することはできませんでした。目的はdatepickerに変数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この関数では
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 } ?>
私は間違って何をしていますか?
EDITここ
は
$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
datepicker:$("。datefromavailable ")。datepicker({ minDate:0、 DATEFORMAT: 'M ddと、Y-Y'、 changeMonth:真、 changeYear:真、 NUMBEROFMONTHS:2、 beforeShowDay:利用可能、 – Daniela
なぜ 'IF($ .inArray(DMY、$(この).find( '入力.activedates ').val())!= -1){'?ユーザーが 'myArray'をクリックする必要があるのはなぜですか? – Spectarion