Hi
I'm using core 2.1.
I have these three dates properties in a model:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
[Required]
public DateTime HkmDate { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
[Required]
public DateTime SDate { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
[Required]
public DateTime EDate { get; set; }
I'm using this 2 JS files to get single datepicker and another start and end dates in shared _Layout page:
datepicker:
(function( factory ) {
if ( typeof define === "function" && define.amd ) {
define([ "../jquery.ui.datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
}(function( datepicker ) {
datepicker.regional['ar'] = {
dateFormat: 'yy/mm/dd',
isRTL: true,
showMonthAfterYear: false,
yearSuffix: ''};
datepicker.setDefaults(datepicker.regional['ar']);
return datepicker.regional['ar'];
}));$("#datepicker").datepicker({
isRTL: true,
changeMonth: true,
changeYear: true
});
sedatepicker:
$(function () {$("#txtFrom").datepicker({
numberOfMonths: 2,
dateFormat: 'yy/mm/dd',
changeMonth: true,
changeYear: true,
onSelect: function (selected) {
var dt = new Date(selected);
dt.setDate(dt.getDate() + 1);$("#txtTo").datepicker("option", "minDate", dt);
}
});$("#txtTo").datepicker({
numberOfMonths: 2,
dateFormat: 'yy/mm/dd',
changeMonth: true,
changeYear: true,
onSelect: function (selected) {
var dt = new Date(selected);
dt.setDate(dt.getDate() - 1);$("#txtFrom").datepicker("option", "maxDate", dt);
}
});
});
So I'm using these tow datepickers in one view to enter a single date and a start and end dates (3 text items)
I have this code to return the previous day of some day returned by the sedatepicker:
$("#txtFrom").datepicker({
onSelect: function () {$(this).change();
}
}).on("change", function() {
var sd = document.getElementsByName("sd")[0].value;
var sd_d = new Date(sd);
//var ed = date.setDate(sd_d - 1);
var ed = new Date(sd_d - 1);
var edString = ed.getFullYear() + '/' + (ed.getMonth() + 1) + '/' + ed.getDate();$("#ed").val(edString);
});
<div class="col-md-3"><div class="form-group"><label asp-for="SDate" class="control-label"></label>
@*<input asp-for="SDate" class="form-control" id="txtFrom" oninput="handler(event);" name="sd" />*@<input asp-for="SDate" class="form-control" id="txtFrom" name="sd" readonly/><span asp-validation-for="SDate" class="text-danger"></span></div></div><div class="col-md-3"><div class="form-group"><label asp-for="EDate" class="control-label"></label><input asp-for="EDate" class="form-control" id="ed" /><span asp-validation-for="EDate" class="text-danger"></span></div></div>
...... Some code<input type="submit" value="Save" class="btn btn-primary" />
Now when I select some date from txtFrom datepicker the values are returned correctly for it and the previous day for the other text item EDate, But when I submit the form the value of Sdate is changed itself to 0001-01-01! Why? and How solve please?