I am getting today's date in the pickup date column using html and js. html
<label for="inputState" class="form-label">Date</label>
<input type="date" id="PickUpDate" class="form-select">
js
<script>
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1;
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
PickUpDate = yyyy + '-' + mm + '-' + dd;
document.getElementById("PickUpDate").setAttribute("min", PickUpDate);
</script>
I want to create another field DropOffDate and take input from the user. But I want to enable dates after 2 days of pickupdate. How can I implement that using html and javascript. I am using this in a asp.net core application.
Is this the sort of thing that you were trying to implement? Set the initial state of the dropoffdate element and then assign an event listener to the pickup element - when there is a change you edit the dropoff value and attributes as per your needs.
const pad=function(i) {
return ( parseInt(i)<10 ) ? '0' + parseInt(i) : parseInt(i);
};
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1;
var yyyy = today.getFullYear();
PickUpDate = yyyy + '-' + pad(mm) + '-' + pad(dd);
document.getElementById("PickUpDate").setAttribute("min", PickUpDate);
// set initial minimum date for dropoff
DropOffDate = yyyy + '-' + pad(mm) + '-' + pad( dd + 2 );
document.getElementById("DropOffDate").setAttribute("min", DropOffDate);
// add event listener to the pickup - change properties & value of droppoff
// when this changes.
document.getElementById("PickUpDate").addEventListener('change',function(e){
let dropoff=new Date( this.value );
dropoff.setDate( dropoff.getDate() + 2 );
dropoff=[ dropoff.getFullYear(), pad( dropoff.getMonth() + 1 ), pad( dropoff.getDate() ) ].join('-');
let input=document.getElementById("DropOffDate");
input.setAttribute('min', dropoff );
input.value=dropoff;
});
label{display:block;padding:0.25rem;margin:1rem;width:50%;}
label input{float:right}
<label for="inputState" class="form-label">
Pick-Up Date
<input type="date" id="PickUpDate" class="form-select" />
</label>
<label for="inputState" class="form-label">
Drop-Off Date
<input type="date" id="DropOffDate" class="form-select" />
</label>
You could assign the min attribute on date change, for example
const pickUpDate = document.getElementById('pickUpDate'),
dropOffDate = document.getElementById('dropOffDate');
pickUpDate.onchange = function() {
const date = this.valueAsDate;
date.setDate(date.getDate() + 2);
dropOffDate.min = date.getFullYear().toString() + '-' + (date.getMonth() + 1).toString().padStart(2, 0) + '-' + date.getDate().toString().padStart(2, 0);
};
<input type="date" id="pickUpDate" />
<input type="date" id="dropOffDate" />