I have this code that I want to check if a date is in the past. I want to check it as soon as the date is entered, before form submission.
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="text" data-date-format="yyyy-mm-dd" >
<script type="text/javascript">
function checkDate() {
var selectedDate = document.getElementById('datepicker').value;
var now = new Date();
if (selectedDate < now) {
alert("Date must be in the future");
}
}
</script>
This does not work, if I enter a date in the past (e.g. 2014-12-03) it does not display the alert.
All you need to do is convert the string produced by the <input>
into a Date using the Date constructor new Date("2014-06-12")
function checkDate() {
var selectedText = document.getElementById('datepicker').value;
var selectedDate = new Date(selectedText);
var now = new Date();
if (selectedDate < now) {
alert("Date must be in the future");
}
}
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="date" data-date-format="yyyy-mm-dd" >
The date()
function returns a string. Try converting both dates to integers first using the Date.parse()
function:
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="text" data-date-format="yyyy-mm-dd" >
<script type="text/javascript">
function checkDate() {
var selectedDate = document.getElementById('datepicker').value;
var now = new Date();
var dt1 = Date.parse(now),
dt2 = Date.parse(selectedDate);
if (dt2 < dt1) {
alert("Date must be in the future");
}
}
</script>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With