2016-12-06 97 views
0

我使用兩個jQuery日期選擇器,基於生成的數組禁用日期。當我在$('input')之後放置$(「#date」)datepickers時,這很好。不過,我還需要一個今天設定的思想,一個maxDate設置爲1年後;當訂單是另一種方式時,它會起作用。我怎樣才能使他們都工作?beforeShowDay在jQuery datepicker中禁用minDate

$(function() { 
    var array=[]; //disabled dates for the beforeShowDay go here 

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

    $("#date").datepicker({ 
     dateFormat: 'yy-mm-dd', 
     minDate: new Date(), 
     maxDate: '+1y', 
     onSelect: function(date){ 

     var selectedDate = new Date(date); 
     var msecsInADay = 86400000; 
     var endDate = new Date(selectedDate.getTime() + msecsInADay); 
     $("#date1").datepicker("option", "minDate", endDate); 
     $("#date1").datepicker("option", "maxDate", '+1y'); 
     } 
    }); 

    $("#date1").datepicker({ 
     dateFormat: 'yy-mm-dd', 
    }); 
    }); 
+0

請加工作的jsfiddle – ScanQR

+0

我有@TechBreak同意:它會更容易幫助你,當你添加的jsfiddle來證明你的問題。至少你應該顯示你正在使用的HTML。 – gus27

+0

我無法讓datepicker在jsfiddle上工作,至於html,它幾乎只是一個。這個問題似乎並不在html內。如果我評論整個$('input')。datepicker(),其他兩個工作就像我想要的一樣,如果我評論其他兩個,$('input')。datepicker()會將日期我希望它變灰。我想知道是否有JavaScript代碼中可能存在衝突的東西 – Victor

回答

0

我不會嘗試在同一DOM元素上應用兩個選擇(「輸入」和「#date」),因爲第二個可以覆蓋第一配置的內容。如果您希望這兩個日期選擇器共享相同的beforeShowDay函數,則可以聲明一次並將其分配給每個日期選擇器。

我不完全清楚你想達到什麼目的。但也許下面的方法與共同的beforeShowDay函數可以幫助。在任何情況下,下面的例子都會告訴你如何在你的問題中插入一個包含datepicker的JSFiddle來闡明你想要的東西。

$(function() { 
 
    var array=['2016-12-08']; //disabled dates for the beforeShowDay go here 
 
    var beforeShowDay = function(date){ 
 
     var string = jQuery.datepicker.formatDate('yy-mm-dd', date); 
 
     return [$.inArray(string, array) == -1]; 
 
     }; 
 

 
    $("#date").datepicker({ 
 
     beforeShowDay: beforeShowDay, 
 
     dateFormat: 'yy-mm-dd', 
 
     minDate: new Date(), 
 
     maxDate: '+1y', 
 
     onSelect: function(date){ 
 
     var selectedDate = new Date(date); 
 
     var msecsInADay = 86400000; 
 
     var endDate = new Date(selectedDate.getTime() + msecsInADay); 
 
     $("#date1").datepicker("option", "minDate", endDate); 
 
     $("#date1").datepicker("option", "maxDate", '+1y'); 
 
     } 
 
    }); 
 

 
    $("#date1").datepicker({ 
 
     beforeShowDay: beforeShowDay, 
 
     dateFormat: 'yy-mm-dd' 
 
    }); 
 
    
 
    });
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
 

 
<input id="date"> 
 
<input id="date1">

+0

這正是它出了什麼問題,非常感謝! – Victor

相關問題