Haftanın günleri kapatmak için JQuery UI datepicker beforeShowDay kullanma

2 Cevap php

ne yapmaya çalışıyorum kapatıldığında için bir mekan haftanın bazı günlerini gri olduğunu. Her mekan farklı günlerde kapalı olabilir.

Bütün Pazar günleri kapatmak için bir test olarak aşağıdaki kodu kullanabilirsiniz:

$('#bookingDatepicker').datepicker({
                minDate: 0, 
                maxDate: '+3M',
                dateFormat: 'DD, d MM, yy',
                altField: '#actualDate',
                altFormat: 'yy-mm-dd',
                beforeShowDay:  closedDays
            });

function closedDays(date) {
  if (date.getDay() == 0){ 
  return [false,"","Venue Closed"]; 
  } else { return [true, ""];
}
}

Ancak ben daha bir gün kapatmak için ve onlar birbirlerinin yanına koşmak olmayabilir olabilir. Veritabanından Benim kodda gün açık olduğunu göstermek, bir dize, aşağıda örnekleri, yaratabilirsiniz ...

1,2,3,4,5,6,0    //I would want to show no days closed
2,3,4,5,6        //I would want to show Sunday (0) and Monday (1) closed

Ben çalışmak için yukarıdaki kodu almak için bu olsa ne yapacağını emin değilim. Ben bu yüzden dize oluşturmak için PHP kullanıyorum ihtiyaç eğer kullanarak işleyebilirsiniz.

EDIT

Her zamanki gibi bir soru göndermek zaman küçük bir atılım olsun! Ben bunun içinde kukla veri kullanırsanız çalışır, aşağıdaki kodu geliştirdi, ancak ben "" benim dize değerlerini sarma bir yol bulmak gerekir. Ben sadece [2,3,4,5] çalışmak için vazgeçti var cloDays = kullanırsanız Yani şimdi bana sorun neden oluyor

var cloDays = ["2","3","4","5"]; 
 function closedDays(date){
 var sDate = date.getDay().toString();
 if ($.inArray(sDate, cloDays) == -1) return [false,"","Venue Closed"];
 else return [true, ""];
}

2 Cevap

Temelde bir PHP diziye patlar ve sonra json_encode kullanarak kodlar, aşağıdaki kod ile benim dize çalıştırarak bunu düzeltmek için başardı. Mükemmel bir iş gibi görünüyor:

$cloDays = json_encode(explode(",", $cloDays));  

Bu Mesaja benim sorunu çözmek değil, bana doğru yönde işaret etmedi.

Bu benim istediğim şekilde çalıştı budur:

var unavailableDates = ["9-5-2011","10-5-2011"];

function unavailable(date) {
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
    if ($.inArray(dmy, unavailableDates) == -1) {
        return [true, ""];
    } else {
        return [false,"","Unavailable"];
    }
}

$('#iDate').datepicker({ minDate: +1, beforeShowDay: unavailable });

Bu bloklar bugün ve ardından unavailableDates dizisinde belirtilen bloklar tarihleri ​​dahil geçmişte tüm tarihler.