Reputation: 948
I have two input fields of type date.
<input id="startdate" type="date" min='@DateTime.Now.AddDays(1).ToShortDateString()' onchange="handler(event)" />
<input id="enddate" type="date" min="@DateTime.Now.AddDays(2).ToShortDateString()" onchange="handler(event)" />
When I click button it is called javascript function which should clear content each of input.
$(function () {
$("#btnRefresh").click(function () {
$('#avaiableHouses').html('');
document.querySelector('#startdate').value = '';
document.querySelector('#enddate').value = '';
$('#startdate, #enddate').val('');
});
})
When it is clicked input with id enddate
is cleared properly, however in input startdate
days and months are reseted but year still remains.
Format of input fields is YYYY-MM-DD
Script called by onchange
function handler(e) {
var source = e.srcElement.id;
if (source == 'startdate')
{
$('#startdate').attr('min', moment().format('YYYY-MM-DD'))
var startDate = $('#startdate').val();
var endDate = moment(startDate).add(1, 'days').format('YYYY-MM-DD');
$('#enddate').attr('min', endDate);
}
else if (source == 'enddate')
{
$('#enddate').attr('min', moment().format('YYYY-MM-DD'))
var startDate = $('#enddate').val();
var endDate = moment(startDate).add(-1, 'days').format('YYYY-MM-DD');
$('#startdate').attr('max', endDate);
}
document.getElementById("btnConfirmTerm").style.visibility = 'hidden';
}
Upvotes: 2
Views: 2032
Reputation: 12181
Here you go with a solution https://jsfiddle.net/Ladjj8ay/1/
handler = function(e) {
var source = e.srcElement.id;
if (source == 'startdate')
{
$('#startdate').attr('min', moment().format('YYYY-MM-DD'))
var startDate = $('#startdate').val();
var endDate = moment(startDate).add(1, 'days').format('YYYY-MM-DD');
$('#enddate').attr('min', endDate);
}
else if (source == 'enddate')
{
$('#enddate').attr('min', moment().format('YYYY-MM-DD'))
var startDate = $('#enddate').val();
var endDate = moment(startDate).add(-1, 'days').format('YYYY-MM-DD');
$('#startdate').attr('max', endDate);
}
document.getElementById("btnConfirmTerm").style.visibility = 'hidden';
}
$(function () {
$("#btnRefresh").click(function () {
$('#avaiableHouses').html('');
$('#startdate, #enddate').val('').removeAttr('min').removeAttr('max');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<input id="startdate" type="date" min='@DateTime.Now.AddDays(1).ToShortDateString()' onchange="handler(event)" />
<input id="enddate" type="date" min="@DateTime.Now.AddDays(2).ToShortDateString()" onchange="handler(event)" />
<button id="btnRefresh">
Clear
</button>
You need to remove the min
& max
attribute from start & end dates.
Hope this will help you.
Upvotes: 1