जेकरी यूआई डेटपिकर। तिथियों की सरणी अक्षम करें


84

मैं अपनी Jquery ui डेटपिकर समस्या के समाधान के लिए खोज करने की कोशिश कर रहा हूं और मुझे कोई भाग्य नहीं मिल रहा है। यहाँ मैं करने की कोशिश कर रहा हूँ ...

मेरे पास एक एप्लिकेशन है जहां मैं कुछ जटिल PHP कर रहा हूं ताकि JSON की तारीखों की एक JSON सरणी वापस कर सकूं जो मैं Jquery UI Datepicker से बाहर चाहता हूं। मैं यह सरणी लौटा रहा हूं:

["2013-03-14","2013-03-15","2013-03-16"]

वहाँ बस कहने के लिए एक आसान तरीका नहीं है: तारीख से इन तिथियों को अवरुद्ध करें?

मैंने UI डॉक्यूमेंटेशन पढ़ा है और मुझे ऐसा कुछ भी नहीं दिखता जो मेरी मदद करे। क्या किसी के भी पास कोई सुझाव है?






किसी ने मुझे इसी तरह के सवालों के लिए साइन इन कर सकते हैं लेकिन Materialize datepicker का उपयोग कर रहे हैं?
naz786

जवाबों:


208

आप ऐसा करने के लिए ShowDay से पहले उपयोग कर सकते हैं

निम्नलिखित उदाहरण दिनांक 14 मार्च 2013 के माध्यम से 16 मार्च 2013 को निष्क्रिय करता है

var array = ["2013-03-14","2013-03-15","2013-03-16"]

$('input').datepicker({
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [ array.indexOf(string) == -1 ]
    }
});

डेमो: फिडल


1
मैं देख रहा हूँ कि तुम कहाँ जा रहे हो। हालांकि मैं अपनी तिथियों की सरणी कैसे शामिल करूंगा।
डैनियल व्हाइट

14
वाह। आप एक शानदार प्रतिभा भाई हैं। मुझे नहीं पता कि यह पहले से ही इस सवाल के लिए स्टैक ओवरफ्लो पोस्ट में क्यों नहीं है क्योंकि यह एक लाख बार पूछा गया है। ऊपर पोस्ट किए गए सभी उदाहरण बहुत जटिल हैं, यह अच्छा और सरल है। 5 सितारे। धन्यवाद।
डैनियल व्हाइट

मैंने कोड jqueryui.com/download/… डाउनलोड कर लिया है, लेकिन जब मैं इसमें उपरोक्त कोड को एकीकृत कर रहा हूं तो यह काम नहीं कर रहा है pls मदद
सैम

एक उत्थान पर्याप्त नहीं है। कुछ लोग चीजों को अधिक जटिल बनाते हैं, जितना कि उन्हें होना चाहिए। एक सरल, काम कर रहे स्निपेट के लिए बहुत बहुत धन्यवाद। बहुत उपयोगी।
0112

4
अगर आप भी इन कस्टम तारीखों के अलावा सप्ताहांत को बाहर करना चाहते हैं, तो रिटर्न लाइन को इसके द्वारा प्रतिस्थापित करें:return array.indexOf(string) != -1 ? [false] : $.datepicker.noWeekends(date);
पाब्लो एसजी पचेको

20

IE 8 में इंडेक्सऑफ फ़ंक्शन नहीं है, इसलिए मैंने इसके बजाय jQuery inArray का उपयोग किया।

$('input').datepicker({
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [$.inArray(string, array) == -1];
    }
});

6
@ChristopherStrydom आपको आश्चर्य होगा कि कितने लोग अभी भी इसका उपयोग करते हैं।
euther

3
ऐसा इसलिए है क्योंकि IE8 नवीनतम IE ब्राउज़र है जो WinXP (SP3) पर चलेगा।
जोसेफ

हालाँकि यह स्ट्रिंग में एक विकल्प की स्थिति को खोजने के लिए एक स्ट्रिंग पर indexOf () फ़ंक्शन का समर्थन करता है।
विजी

9

यदि आप रविवार (या अन्य दिनों) के साथ-साथ तारीखों के सरणी को भी ब्लॉक करना चाहते हैं, तो मैं इस कोड का उपयोग करता हूं:

jQuery(function($){

    var disabledDays = [
       "27-4-2016", "25-12-2016", "26-12-2016",
       "4-4-2017", "5-4-2017", "6-4-2017", "6-4-2016", "7-4-2017", "8-4-2017", "9-4-2017"
    ];

   //replace these with the id's of your datepickers
   $("#id-of-first-datepicker,#id-of-second-datepicker").datepicker({
      beforeShowDay: function(date){
         var day = date.getDay();
         var string = jQuery.datepicker.formatDate('d-m-yy', date);
         var isDisabled = ($.inArray(string, disabledDays) != -1);

         //day != 0 disables all Sundays
         return [day != 0 && !isDisabled];
      }
   });
});   

1
$('input').datepicker({
   beforeShowDay: function(date){
       var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
       return [ array.indexOf(string) == -1 ]
   }
});

1

इससे पहले कि मेरे लिए काम न करें, इसलिए मैंने आगे बढ़कर अपना खुद का समाधान विकसित किया:

$('#embeded_calendar').datepicker({
               minDate: date,
                localToday:datePlusOne,
               changeDate: true,
               changeMonth: true,
               changeYear: true,
               yearRange: "-120:+1",
               onSelect: function(selectedDateFormatted){

                     var selectedDate = $("#embeded_calendar").datepicker('getDate');

                    deactivateDates(selectedDate);
                   }

           });


              var excludedDates = [ "10-20-2017","10-21-2016", "11-21-2016"];

              deactivateDates(new Date());

            function deactivateDates(selectedDate){
                setTimeout(function(){ 
                      var thisMonthExcludedDates = thisMonthDates(selectedDate);
                      thisMonthExcludedDates = getDaysfromDate(thisMonthExcludedDates);
                       var excludedTDs = page.find('td[data-handler="selectDay"]').filter(function(){
                           return $.inArray( $(this).text(), thisMonthExcludedDates) >= 0
                       });

                       excludedTDs.unbind('click').addClass('ui-datepicker-unselectable');
                   }, 10);
            }

            function thisMonthDates(date){
              return $.grep( excludedDates, function( n){
                var dateParts = n.split("-");
                return dateParts[0] == date.getMonth() + 1  && dateParts[2] == date.getYear() + 1900;
            });
            }

            function getDaysfromDate(datesArray){
                  return  $.map( datesArray, function( n){
                    return n.split("-")[1]; 
                });
             }

क्या हम dateRangePicker पर यही काम कर सकते हैं ??
सुनील रावत

1

DD-MM-YY के लिए इस कोड का उपयोग करें:

var array = ["03-03-2017 ', '03 -10-2017', '03 -25-2017"]

$('#datepicker').datepicker({
    beforeShowDay: function(date){
    var string = jQuery.datepicker.formatDate('dd-mm-yy', date);
    return [ array.indexOf(string) == -1 ]
    }
});

function highlightDays(date) {
    for (var i = 0; i < dates.length; i++) {
    if (new Date(dates[i]).toString() == date.toString()) {
        return [true, 'highlight'];
    }
}
return [true, ''];
}

क्या यह daterangepicker के लिए संभव है, मैं तारीख-रेंज-पिकर पर तारीखों की एक सरणी को अक्षम करना चाहता हूं ??
सुनील रावत

क्या आप कृपया अपने प्रश्न को परिभाषित कर सकते हैं?
डिएरिग पैट्रिक

मेरे पास डेट रेंज पिकर सपोस: 01/01/2017 - 31/03/2017 है। मैं इस सीमा के बीच कुछ तिथियों को कस्टम तिथियों की एक सरणी को हाइलाइट करना चाहता हूं। दिनांक-श्रेणी कैलेंडर पर। $ तारीखें [[०२ / ०१ / २०१0, 3'03/01/2017'...till] ये तारीखें। यह संभव है?
सुनील रावत

जैसे डेटपिकर में हम उपयोग कर सकते हैं: पहले इस उद्देश्य के लिए कार्य करें, डेट-रेंज-पिकर में क्या है: daterangepicker.com
सुनील रावत

1

यदि आप विशेष तिथि (तारीखों) को jquery datepicker में अक्षम करना चाहते हैं तो यहां आपके लिए सरल डेमो है।

<script type="text/javascript">
    var arrDisabledDates = {};
    arrDisabledDates[new Date("08/28/2017")] = new Date("08/28/2017");
    arrDisabledDates[new Date("12/23/2017")] = new Date("12/23/2017");
    $(".datepicker").datepicker({
        dateFormat: "dd/mm/yy",
        beforeShowDay: function (date) {
            var day = date.getDay(),
                    bDisable = arrDisabledDates[date];
            if (bDisable)
                return [false, "", ""]
        }
    });
</script>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.