2013-03-08 181 views
9

我有一個選擇框,用戶可以選擇3個不同的店鋪揀選天。不應該可以在商店2和商店3選擇週末,而商店1則只能選擇週一至週六。jQuery的日期選擇器 - 刷新基於所選的選項

下面的JavaScript僅適用於第一個選秀權。如果您之後選擇另一家商店,它將堅持以前的選擇。

我使用$("#datepicker").datepicker("refresh");試過(見how to refresh datepicker?),但沒有成功。我開始認爲問題在於別處。

的Javascript:

$(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

如何刷新/有日期選擇正確應用這些設置?

回答

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 2013-03-08 15:12:52

相關問題