2015-08-24 72 views
-1

jQuery-UI日期選擇器中的最小日期設置(minDate)應設置爲生日(在我的代碼中爲birthdateDMY)。我正在考慮在.datepicker({})中使用匿名函數,但我不知道如何使其工作。將minDate設置爲jQuery數據添加日期中的動態日期

//birthdateDMY will be something like [ "01", "07", "2015" ] 
var name = jQuery("#dropdown").val(); 
var index = baby.Name.indexOf(name); 
var birthdateDMY = baby.BirthDate[index].split("/"); 

jQuery(function() { 
    jQuery("#datepicker").datepicker({ 
     //need an anonymous function here to set minDate? 
     minDate: (new Date(birthdateDMY[2], birthdateDMY[1] - 1, 
birthdateDMY[0])), 
    maxDate: 0, 
    dateFormat: "dd/mm/yy" 
}); 

解決使用二傳手:

//Setter: update minDate for e.g. #datepicker 
function updateMinDate(selector){ 
    //birthdateDMY will be something like [ "01", "07", "2015" ] 
    var name = jQuery("#dropdown").val(); 
    var index = baby.Name.indexOf(name); 
    var birthdateDMY = baby.BirthDate[index].split("/"); 
    //Update minDate in the selected item 
    $(selector).datepicker("option", "minDate", new Date(birthdateDMY[2], birthdateDMY[1] - 1, birthdateDMY[0])); 
} 

//When changin #dropdown, call updateMinDate 
jQuery(document).on('change', '#dropdown', function(e) { 
    updateMinDate("#datepicker"); 
} 



jQuery(function() { 
    jQuery("#datepicker").datepicker({ 
    minDate: <some code run when page loads>, 
    maxDate: 0, numberOfMonths: 2, dateFormat: "dd/mm/yy" 
    }); 
}); 
+0

也許你可以設置一個驗證函數到日期選擇器字段,所以它不會允許用戶提交表單,而de date不符合標準。 – Aleuck

回答

0

您需要重新初始化您的日期選擇器時,您的下拉變化。現在當你的頁面加載時,它設置日期選擇器,然後它永遠不會改變它。 所以,像這樣的事件應該有所幫助:

$("#dropdown").change(function(){ 
//reinitialize date-picker here 
}); 

您可能需要發揮與它周圍一點,但我認爲這將解決您的問題。

+0

是的,我注意到,就像我寫的那樣,minDate無法更改。我會嘗試在那裏改變下拉列表。 您是否認爲我不能在這種情況下使用匿名函數,爲什麼?謝謝! – aless80

+0

使用setter解決: – aless80