2009-03-24 19 views
23

क्या jQuery UI Datepicker को विशिष्ट, पूर्व निर्धारित दिनों के चयन को अस्वीकार करने के लिए कोई आसान (आसान) तरीका है?jQuery यूआई डेटपिकर - विशिष्ट दिन अक्षम करें

मैं this approach काम करने में सक्षम था, हालांकि, यह एक शून्य त्रुटि उत्पन्न करता है जो इसे आईई में प्रदर्शित करने से रोकता है।

'natDays [...]। 0' पहले से अशक्त या नहीं एक वस्तु

धन्यवाद है!

अद्यतन: अगर मैं कुछ कोड शामिल करता हूं, तो सही मदद मिल सकती है? वैसे भी, इनमें से अधिकतर उपर्युक्त धागे से सीधे लिया गया था:

natDays = [ 
     [7, 23], [7, 24], [8, 13], [8, 14], 
    ]; 

    function nationalDays(date) { 
     for (i = 0; i < natDays.length; i++) { 
      if (date.getMonth() == natDays[i][0] - 1 
      && date.getDate() == natDays[i][1]) { 
       return [false, natDays[i][2] + '_day']; 
      } 
     } 
     return [true, '']; 
    } 

    function noWeekendsOrHolidays(date) { 
     var noWeekend = $.datepicker.noWeekends(date); 
     if (noWeekend[0]) { 
      return nationalDays(date); 
     } else { 
      return noWeekend; 
     } 
    } 


    $(function() { 
     $("#datepicker").datepicker({ 
      inline: true, 
      minDate: new Date(2009, 6, 6), 
      maxDate: new Date(2009, 7, 14), 
      numberOfMonths: 2, 
      hideIfNoPrevNext: true, 
      beforeShowDay: $.datepicker.noWeekends, 
      altField: '#alternate', 
     }); 
    }); 

धन्यवाद फिर से!

+0

तुम क्या आप वें उत्पादन thats है अपने कोड पेस्ट कर सकता है ई त्रुटि – TStamper

+0

प्रश्न में कम से कम लाइन के कोड नमूने की आवश्यकता है ... – Tracker1

उत्तर

9

क्या आपने सामने 'var' कीवर्ड के साथ सही ढंग से नाटडे घोषित करने का प्रयास किया है?

इसके अलावा - आपके नाटडेज़ परिभाषा के अंत में आपके पास अतिरिक्त कॉमा है।

natDays [मैं] [2] अपने सरणियों के रूप में काम नहीं करेगा केवल उन में 2 आइटम नहीं हैं - कोशिश 'सिर्फ'

साथ ही, आप अपने beforeShowDay समारोह नाम सही ढंग से स्थापित करने के लिए चाहता हूँ - नहीं करता है ' ऐसा लगता है कि टी नज़र भी अपने कस्टम समारोह कॉल कर रहा है

+0

हम्म ... बस कोशिश की। कोई भाग्य नहीं।यह त्रुटि है कि आईई वापस आ रहा है: 'नेटडेज़ [...] 0 0 शून्य है या कोई ऑब्जेक्ट नहीं है – Sam

+0

मेरा हालिया संपादन देखें ... इसे ठीक से परिभाषित नहीं किया गया है (अतिरिक्त कॉमा) –

+0

ठीक है ... मुझे लगता है हम कहीं जा रहे हैं! आईई 8 में अतिरिक्त कॉमा निश्चित चीजें। क्या आप मुझे दिखा सकते हैं कि आपकी दूसरी टिप्पणी के साथ आपका क्या मतलब है? (मैं एक जेएस नौसिखिया हूँ ... क्या आप बता सकते हैं?) धन्यवाद! – Sam

0
beforeShowDay: $.datepicker.noWeekends, 

हो जाएगा

beforeShowDay: noWeekendsOrHolidays, 
14

यहाँ चयनित किए जाने से विशिष्ट तिथियों निष्क्रिय करने के लिए एक तरीका है:

012,
var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"]; 

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

$('#iDate').datepicker({ beforeShowDay: unavailable }); 

Source: jQuery - Datepicker - Disable Specific Dates

1

IE के साथ समस्या संभवत: निम्न पंक्ति पर है:

altField: '#alternate', 
}); 

कोशिश अल्पविराम प्रतीक दूर करने के लिए और यह काम करना चाहिए।

6

आप beforeShowDay विकल्प का उपयोग कर सकते हैं। मुझे महीने के 28 वें दिन से किसी भी दिन अक्षम करने की जरूरत थी। मेरा कोड यहाँ है।

$('.datepicker').datepicker({ 
    dateFormat: "yy-mm-dd", 
    beforeShowDay: function(date) { 
     var day = date.getDate(); 
     if (day > 28) { 
      return [false]; 
     } else { 
      return [true]; 
     } 
    } 
}); 

यहाँ इसके बारे में अधिक जानकारी है:, http://api.jqueryui.com/datepicker/#option-beforeShowDay

तारीख चर beforeShowDay कॉलबैक में पारित एक जावास्क्रिप्ट तारीख वस्तु है, इसलिए यह विभिन्न पुस्तकालयों का उपयोग कर प्रारूपित किया जा सकता, एक टाइमस्टैम्प तारीख का उपयोग पुनः प्राप्त किया जा सकता है। getTime(), आदि

+0

whoto उपयोग करने में मदद करने में बहुत खुशी हुई है? –

+0

@WHK मुझे खेद है, लेकिन मुझे आपका प्रश्न समझ में नहीं आता है। –

0
var unavailableDates = ["19-8-2014","14-9-2014"]; 

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

$('#iDate').datepicker({ beforeShowDay: unavailable }); 

लाइव डेमो: http://jsfiddle.net/vfod0krm/

संबंधित मुद्दे