私は、日付ピッカー ( http://www.eyecon.ro/bootstrap-datepicker/ ) のブートストラップ プラグインを使用しています。上記のリンクにアクセスすると、簡単なチェックイン チェックアウト フォームを作成する方法のコード例があります。チェックアウト日付ピッカーでは、チェックイン日付ピッカーより前の日付はすべて無効になっています。
私のサイトには、複数のチェックイン チェックアウト フォームがあります (複数の部屋用)。部屋ごとに、チェックインとチェックアウトの日付ピッカー (カップル) があります。だから私は次のコードがそれを行うと考えました。
ページで見つかったすべての日付ピッカーを含む配列を作成します (変数にすることができます)。次に、2 ごとに配列をループし、カップルごとにコードを適用します。
if ($('.datepicker').length) {
//get all the datepickers
var IDs = [];
$(".main").find(".datepicker").each(function(){ IDs.push(this.id); });
for(j=0;j<IDs.length;j++){
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var checkin = $('#'+ IDs[j]).datepicker({
onRender: function(date) {
return date.valueOf() < now.valueOf() ? 'disabled' : '';
}
}).on('changeDate', function(ev) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate() + 1);
checkout.setValue(newDate);
checkin.hide();
$('#'+ IDs[j+1])[0].focus();
}).data('datepicker');
var checkout = $('#'+ IDs[j+1]).datepicker({
onRender: function(date) {
return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
}
}).on('changeDate', function(ev) {
checkout.hide();
}).data('datepicker');
j++;
}
}
結果は、ページに 2 つの日付ピッカーがある場合、2 つ目の日付ピッカーが期待どおりに機能することです。最初のものはまったくありません。ページに1つの日付ピッカーがある場合、それは機能します。
アラート (ID) を追加すると、必要に応じて正しい順序で ID の配列が取得されます。
誰かが助けてくれるなら... :) よろしくお願いします!