2017-06-29 5 views
1

Ich habe einen Datepicker, der alle vergangenen Tage deaktiviert hat, und alle Tage außer dienstags und mittwochs deaktiviert.set Standarddatum in datepicker nur dienstags und mittwochs?

Ich möchte, dass der Standard-Tag der erste aktivierte Wochentag ist. Wenn es Dienstag ist, sollte es Dienstag, Mittwoch, dann Mittwoch zeigen. Jeden anderen Tag sollte es nächsten Dienstag im Eingabefeld angezeigt werden.

Dies ist der Code, den ich für den Datepicker verwende.

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

Und die Eingabe, dass ich die Wähler bin mit auf:

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

Antwort

0

Sie können momentjs verwenden ein wenig leichter bekommen am nächsten Tag der Woche zu machen und dann nur noch einen if-else Aussage den richtigen Wochentag zu erhalten:

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); 
    } 
} 

Rufen Sie die setDate() Funktion dann und eingestellt, dass der Rückgabewert als das Datum in der Datumsauswahl.

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

Hier ist ein funktionierendes Beispiel. https://jsfiddle.net/jutcw0ve/

+2

'new Date() getDay()' ISO Wochentag nicht entspricht Nummerierung wie es gibt '0' für Sonntag, aber 'var isoWeekday = new Date () .getDay() || 7; 'wird das richtige Ergebnis geben. ;-) – RobG

+0

Die von Ihnen definierte setDate-Methode gibt einen Zeitstempel zurück, aber der Zeitstempel wird das Datum in der Selektoranweisung für mich nicht setzen. – ArmorCode

+0

@ArmorCode, haben Sie sicher gestellt, dass ich genau so vorginge wie im obigen Code? (Beachten Sie, dass Sie 'new Date (setDate())' tun müssen, da es sonst nicht funktioniert. – Kurt

Verwandte Themen