2013-03-08 9 views
9

पर आधारित पिकेबल दिन रीफ्रेश करें मेरे पास एक चुनिंदा बॉक्स है जहां उपयोगकर्ता 3 अलग-अलग दुकानें चुन सकता है। दुकान 2 और 3 के लिए सप्ताहांत चुनना संभव नहीं है, और दुकान 1 के लिए आपको केवल सोम-शनि चुनने में सक्षम होना चाहिए।jQuery डेटपिकर - चयनित विकल्प

निम्नलिखित जावास्क्रिप्ट केवल पहले पिक पर काम करता है। यदि आप सही बाद में एक और दुकान चुनते हैं, तो यह पुराने विकल्पों के साथ रह जाएगा।

मैंने $("#datepicker").datepicker("refresh"); का उपयोग करने का प्रयास किया है (how to refresh datepicker? देखें) लेकिन बिना किसी सफलता के। मुझे लगता है कि समस्या कहीं और है।

जावास्क्रिप्ट:

$(function() { 

    var setting, currentShop = 0; 

    /* Select box */ 

    $('select#shop').change(function() { 
    (currentShop = $(this).val() == 1) ? loadDatePicker(setting = 'noSunday') : loadDatePicker(setting = 'noWeekends'); 
    }); 

    /* Datepicker */ 

    function noSunday(date){ 
    var day = date.getDay(); 
    return [(day > 0), '']; 
    } 

    function loadDatePicker(setting) { 
    if(setting == 'noWeekends') { 
     $("#datepicker").datepicker({ beforeShowDay: $.datepicker.noWeekends, minDate: +2, maxDate: "+1M" }); 
    } 
    if(setting == 'noSunday') { 
     $("#datepicker").datepicker({ beforeShowDay: noSunday, minDate: +2, maxDate: "+1M" }); 
    } 
    $("#datepicker").datepicker("refresh"); 
    } 
}); 

HTML:

<select id="shop" name="shop"> 
    <option value="0" selected="selected">Choose a shop</option> 
    <option value="1">1 (closed sundays)</option> 
    <option value="2">2 (closed weekends)</option> 
    <option value="3">3 (closed weekends)</option> 
    </select> 
    <label for="datepicker">Datepicker</label><input type="text" name="date" id="datepicker" value="" readonly="readonly" /> 

Jsfiddle: http://jsbin.com/ajavek/1/edit

मैं कैसे ताज़ा करते/datepicker के साथ सही ढंग सेटिंग्स लागू?

उत्तर

19

देखें इस: DEMO

function loadDatePicker(setting) { 
    $("#datepicker").datepicker("destroy"); 
    if(setting == 'noWeekends') { 
     $("#datepicker").datepicker({ beforeShowDay: $.datepicker.noWeekends, minDate: +2, maxDate: "+1M" }); 
    } 
    else if(setting == 'noSunday') { 
     $("#datepicker").datepicker({ beforeShowDay: noSunday, minDate: +2, maxDate: "+1M" }); 
    } 
    $("#datepicker").datepicker("refresh"); 
    } 

आप बदलते सेटिंग्स से पहले $("#datepicker").datepicker("destroy"); हर बार लगाने की जरूरत है ...

+1

एक समाधान की तरह लग रहा। हालांकि हर बार इसे नष्ट करने में थोड़ा अजीब लगता है, लेकिन इस छोटी परियोजना के लिए मुझे लगता है कि यह ठीक है। – estrar

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