2009-11-23 14 views
73

Come disabilitare le date passate su jQuery datepicker? Ho cercato le opzioni ma non sembra trovare nulla che indichi la possibilità di disabilitare le date passate.jQuery datepicker per impedire la data precedente

AGGIORNAMENTO: Grazie per la risposta rapida. Ci ho provato senza fortuna. I giorni non erano ancora in grigio come mi aspettavo e accetto ancora la data precedente selezionata.

ho provato questo:

$('#datepicker').datepicker({ minDate: '0' }); 

non funziona.

ho provato questo:

$('#datepicker').datepicker({ minDate: new Date() }); 

Ancora non funziona neanche.

Visualizza correttamente il widget del calendario. Semplicemente non oscurerà o impedirà l'input dei giorni passati. Ho tentato il minDate e il maxDate in passato senza fortuna, quindi ho pensato che non dovevano essere loro.

risposta

33

Hai solo bisogno di specificare una data minima - impostandolo su 0 significa che la data minima è 0 giorni da oggi vale a dire oggi. È possibile passare invece la stringa '0d' (l'unità predefinita è giorni).

$(function() { 
    $('#date').datepicker({ minDate: 0 }); 
}); 
0

Provare a impostare startDate alla data corrente. Per esempio:

$('.date-pick').datePicker({startDate:'01/01/1996'}); 
+0

Sembra che sia per il selezionatore di date di Kevin Luck non quello standard di JQuery – salonMonsters

135

Prova questa:

$("#datepicker").datepicker({ minDate: 0 }); 

Rimuovere le citazioni da 0.

+0

Che ha funzionato alla grande! –

+0

Questa dovrebbe essere la risposta accettata. – BWDesign

+4

@BWDesign Ho risposto un anno e mezzo dopo di me;) –

9

Questo funziona:

$("#datepicker").datepicker({ minDate: +0 }); 
+0

Questa soluzione funziona davvero! – Michiel

2

Sto usando seguente codice per formattare data e mostrare 2 mesi in calendario ...

<script> 
$(function() { 

    var dates = $("#from, #to").datepicker({ 

     showOn: "button", 
     buttonImage: "imgs/calendar-month.png", 
     buttonImageOnly: true,       
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 2, 

     onSelect: function(selectedDate) { 




      $(".selector").datepicker({ defaultDate: +7 }); 
      var option = this.id == "from" ? "minDate" : "maxDate", 


       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
        instance.settings.dateFormat || 
        $.datepicker._defaults.dateFormat, 
        selectedDate, instance.settings); 

      dates.not(this).datepicker("option", "dateFormat", 'yy-mm-dd'); 


     } 
    }); 
}); 

</script> 

Il problema è che non sono sicuro di come limitare date precedenti selezione.

23

Rimuovere le virgolette che circondano 0 e funzionerà.

lavoro Snippet di codice:

// set minDate to 0 for today's date 
 
$('#datepicker').datepicker({ minDate: 0 });
body { 
 
    font-size: 12px; /* just so that it doesn't default to 16px (which is kinda huge) */ 
 
}
<!-- load jQuery and jQuery UI --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> 
 

 
<!-- load jQuery UI CSS theme --> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> 
 

 
<!-- the datepicker input --> 
 
<input type='text' id='datepicker' placeholder='Select date' />

+1

Qualche spiegazione sul perché la virgola è necessaria? Posso rimuoverlo e tutto funziona ancora correttamente. Esiste un browser che richiede una virgola per un singolo oggetto proprietà? – schickm

+0

Hai solo bisogno di virgole se utilizzi più opzioni, ad es. '$ ('# datepicker'). Datepicker ({minDate: 0, maxDate:" + 1M + 10D ", dateFormat: 'aa-mm-gg'});' Non è necessaria una virgola dopo l'ultima opzione – Tanvir

+1

si sta inviando un oggetto al metodo. una virgola sull'ultimo valore non è corretta. –

1

assicuratevi di mettere più proprietà nella stessa linea (dal momento che ha mostrato solo 1 riga di codice, si può avere avuto lo stesso problema L'ho fatto).

Il mio imposta la data predefinita, ma non ha disattivato le vecchie date.Questo non funziona:

$('#date_end').datepicker({ defaultDate: +31 }) 
$('#date_end').datepicker({ minDate: 1 }) 

Questo fa entrambe le cose:

$('#date_end').datepicker({ defaultDate: +31, minDate: 1 }) 

1 e +1 lavoro lo stesso (o 0 e 0 nel tuo caso).

Me: Windows 7 x64, Rails 3.2.3, Ruby 1.9.3

22

Se avete a che fare con una selezione data in precedenza legato quindi impostando

$("#datepicker").datepicker({ minDate: 0 }); 

non funzionerà. Questa sintassi è applicabile solo quando si crea il widget.

per impostare la data min per una selezione data limite utilizzare il seguente:

$("#datePicker").datepicker("option", "minDate", 0); 
+1

grazie per la soluzione precedentemente associata – stackoverfloweth

+1

Grazie.Ho perso tempo a trovare questa soluzione e questo ha risolto il mio problema. – Rushan

1
var givenStartDate = $('#startDate').val(); 
     alert('START DATE'+givenStartDate); 
     var givenEndDate = $('#endDate').val(); 
     alert('END DATE'+givenEndDate); 
     var date = new Date(); 
     var month = date.getMonth()+1; 
     var day = date.getDate(); 
     var currentDate = date.getFullYear() + '-' + 
      (month<10 ? '0' : '') + month + '-' + 
      (day<10 ? '0' : '') + day; 
     if(givenStartDate < currentDate || givenEndDate < currentDate) 
     { 
     $("#updateButton").attr("disabled","disabled"); 
     } 
     if(givenStartDate < currentDate && givenEndDate > currentDate) 
      { 
      $("#updateButton").attr("enabled","enabled"); 
      } 
     if(givenStartDate > currentDate || givenEndDate > currentDate) { 
     $("#updateButton").attr("enabled","enabled"); 
     } 

Prova questa. Se qualche errore, per favore correggimi :) Grazie a tutti.

10

Dare zero alla mente e disattenderà le date passate.

$("#datepicker").datepicker({ minDate: 0}); 

Live example

read more here

7

// futuro disabilitare risale risale

$('#datetimepicker1').datetimepicker({ 
      format: 'DD-MM-YYYY', 
      maxDate: new Date 
     }); 

// passato disabilitare

$('#datetimepicker2').datetimepicker({ 
     format: 'DD-MM-YYYY', 
     minDate: new Date 
    }); 
+0

Non sono sicuro del motivo per cui questa risposta ha ottenuto un voto negativo, perché la sua soluzione ha funzionato per me, mentre la soluzione accettata che utilizzava un '0' ha causato un errore JavaScript. +1 – Sheridan

5

$("#datePicker").datePicker({startDate: new Date() });. Questo funziona per me

0

ho usato l'attributo min: min="' + (new Date()).toISOString().substring(0,10) + '"

Ecco il mio codice e ha funzionato.

<input type="date" min="' + (new Date()).toISOString().substring(0,10) + '" id="' + invdateId + '" value="' + d.Invoice.Invoice_Date__c + '"/> 

enter image description here

Problemi correlati