2017-06-29 28 views
1

我有一個禁用日期的日期選擇器,並且除週二和週三以外的所有日子均被禁用。僅在星期二和星期三設置日期選擇器的默認日期?

我希望默認日爲一週中的第一天。如果是星期二,則應顯示星期二,如星期三,星期三。任何其他日子,它應該在輸入字段的下一個星期二顯示。

這是我用於datepicker的代碼。

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $(".datepicker").datepicker({ 
      minDate:'0', 
      changeMonth:true, 
      changeYear:true, 
     beforeShowDay: 
       function(dt) 
       { 
        return [dt.getDay() === 2 || dt.getDay() === 3, ""]; 
       }}); 
     }); 
</script> 

而我使用的選擇輸入:

<form method="POST"> 
    <div style='margin:0 auto; text-align:center;'> 
     <label>Appointment Date: </label> 
     <input type="hidden" name="action" value="list_appointments" /> 
     <input type="text" id="datepicker" name="date" class="datepicker" /> 
       <!--value=--><?php #echo date_format(new DateTime("now",new DateTimeZone('America/Chicago')),'m/d/Y');?> 
     <input type="submit" value="Refresh List" name="Update" /> 
     <br /> 
    </div> 
</form> 

回答

0

您可以使用momentjs,使得到一週的第二天更容易一點,然後只是有一個的if-else聲明得到一週的正確天:

function setDate() { 
    var today = moment().isoWeekday(); //or just = new Date().getDay(); 
    if (today <= 2) { 
    return moment().isoWeekday(2); 
    } else if (today === 3) { 
    return moment().isoWeekday(3); 
    } else { 
    return moment().add(1, 'weeks').isoWeekday(2); 
    } 
} 

調用setDate()功能則並設置返回值在日期選擇器的日期。

$('.datepicker').datepicker("setDate", new Date(setDate())); 

這裏有一個工作示例:https://jsfiddle.net/jutcw0ve/

+2

'新的Date()getDay()'不等同於ISO平日編號,因爲它返回'0'週日,但是'VAR isoWeekday =新的日期( ).getDay()|| 7;'會給出正確的結果。 ;-) – RobG

+0

您正確定義的setDate方法會返回一個時間戳,但時間戳不會爲我在選擇器語句中設置日期。 – ArmorCode

+0

@ArmorCode,你是否確實像我在上面的代碼中一樣設置它? (注意,你需要像我一樣做'new Date(setDate())',否則它不起作用)。 – Kurt

相關問題