Reputation: 1043
Is there a way to disable dates before today in HTML5?
<input type="date">
I tried this
<input type="date" min="<?php echo $today; ?>">
but this works only on desktop browsers... safari mobile still allow dates prior to today.
Upvotes: 7
Views: 44020
Reputation: 226
if you are using jQuery try this. First add id
to your element
<input type="date" id="minDate">
then in between script
tag put below code
$(document).ready(function () {
var today = new Date().toISOString().split('T')[0];
$("#minDate").attr('min', today);
});
It should work fine
$(document).ready(function() {
var today = new Date().toISOString().split('T')[0];
$("#minDate").attr('min', today);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="minDate">
Upvotes: 0
Reputation: 348
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = yyyy + '-' + mm + '-' + dd;
document.getElementById("datefield").setAttribute("max", today);
<input id="datefield" type='date' min='1899-01-01' max='2000-13-13'></input>
Upvotes: 5
Reputation: 157
You can try this:
<input type="date" name="bday" min="<?= date('Y-m-d'); ?>">
Upvotes: 0
Reputation: 4552
Input date must be in ISO format (which is supported by mobile browsers).
There is no possible way to do this with pure HTML5.
But with Javascript, you can do something like:
<input name="setTodaysDate" type="date">
and;
var today = new Date().toISOString().split('T')[0];
document.getElementsByName("setTodaysDate")[0].setAttribute('min', today);
This little script will change the min
with today's date in ISO format.
Live example here: jsFiddle
Upvotes: 15