2013-06-19 7 views

risposta

29

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.

+0

Funziona affatto? – Pasta

+0

@Pasta Sì, lo fa. Hai avuto un problema specifico nell'implementarlo? – Blazemonger

+1

Se l'utente inserisce una data in base all'input invece che al calendario, questo non funziona :( – smartmouse

9

Sì, è facile. potete farlo seguendo

<input type="date" min="<?php echo date("Y-m-d"); ?>" > </input> 
+21

Chi ha detto che stava usando PHP? – Blazemonger

+1

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

+2

Fatto: http://stackoverflow.com/a/19253547/901048 – Blazemonger

0

È 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