È possibile disabilitare le date quando utilizzo Voglio disabilitare la data corrente per uno scenario e le date future per altri scenari. Come devo disabilitare le date?Disabilitare alcune date da html5 datepicker
risposta
Datepicker HTML (<input type=date>
) supporta l'attributo min
/max
, ma è not widely supported.
Nel frattempo è possibile considerare l'utilizzo di bootstrap-datepicker, v1.2.0 è github.
Riferimenti:
You can add a min
or max
attribute to the input type=date
. La data deve essere in formato ISO (aaaa-mm-gg). Questo è supportato in molti browser per dispositivi mobili e versioni correnti di Chrome, sebbene gli utenti possano immettere manualmente una data non valida senza utilizzare datepicker.
<input name="somedate" type="date" min="2013-12-25">
Il min
e max
attributi deve essere una data completa; non c'è modo di specificare "oggi" o "+0
". Per fare ciò, avrete bisogno di usare JavaScript o un linguaggio lato server:
var today = new Date().toISOString().split('T')[0];
document.getElementsByName("somedate")[0].setAttribute('min', today);
http://jsfiddle.net/mblase75/kz7d2/
Escludere solo oggi, pur consentendo passati o futuri date, non è un'opzione in questa sede. Tuttavia, se vuoi che domani diventi la data min
(che si annulla oggi e tutte le date passate), vedi this question per incrementare lo today
di un giorno.
Come in tutti gli altri casi che coinvolgono moduli HTML, è necessario convalidare sempre il lato campo server indipendentemente da come lo si limita sul lato client.
Sì, è facile. potete farlo seguendo
<input type="date" min="<?php echo date("Y-m-d"); ?>" > </input>
Chi ha detto che stava usando PHP? – Blazemonger
se non sta usando, allora deve usare. penso che html5 non stia fornendo questa facilitazione. se si sa come fare senza usare PHP quindi postare la risposta, quindi posso aggiornare le mie conoscenze – Ritesh
Fatto: http://stackoverflow.com/a/19253547/901048 – Blazemonger
È possibile utilizzare questo per disabilitare le date future:
All'interno document.ready
funzione, posizionare
//Display Only Date till today //
var dtToday = new Date();
var month = dtToday.getMonth() + 1; // getMonth() is zero-based
var day = dtToday.getDate();
var year = dtToday.getFullYear();
if(month < 10)
month = '0' + month.toString();
if(day < 10)
day = '0' + day.toString();
var maxDate = year + '-' + month + '-' + day;
$('#dateID').attr('max', maxDate);
e in forma
<input id="dateID" type="date"/>
Ecco il funzionamento jFiddle Demo
Funziona affatto? – Pasta
@Pasta Sì, lo fa. Hai avuto un problema specifico nell'implementarlo? – Blazemonger
Se l'utente inserisce una data in base all'input invece che al calendario, questo non funziona :( – smartmouse