我的asp网络核心剃须刀形式中的jQuery有一个问题。我可以使用jQuery在文本之类的输入类型中更改值,但不能更改日期类型,我不知道为什么。
下面是Project的一部分,就是我想要在表单中更改的属性:
[DataType(DataType.Date)]
public DateTime? OnSite { get; set; }
[Display(Name = "Opening date")]
[DataType(DataType.Date)]
public DateTime? OpeningDate { get; set; }这是Razor表单的一部分:
<div class="form-group">
<label asp-for="Project.OnSite" class="control-label"></label>
<input asp-for="Project.OnSite" class="form-control" style="width: 170px"/>
<span asp-validation-for="Project.OnSite" class="text-danger"></span>
</div>下面是我的jQuery脚本:
$(@Html.IdFor(x => x.Project.OpeningDate)).change(function () {
var openingDate = $(@Html.IdFor(x => x.Project.OpeningDate)).val();
var monday = moment(openingDate).day("Monday").format("MM/DD/YYYY HH:mm:ss");
//alert(monday);
$((@Html.NameFor(x => x.Project.OnSite))).val(monday);
});这是如何生成表单(源页面视图):
<div class="form-group">
<label class="control-label" for="Project_OnSite">OnSite</label>
<input class="form-control" style="width: 170px" value="" type="date" id="Project_OnSite" name="Project.OnSite" />
<span class="text-danger field-validation-valid" data-valmsg-for="Project.OnSite" data-valmsg-replace="true"></span>
</div>正如我所说的,我可以将周一的值放入textare,textbox,但我不能使用type="date",这可能是因为剃须刀在后台使用了一些日期选择器,这不会让我更改,或者我不知道。浏览器中生成的表单如下所示:开幕日期
这就是我想要更改的内容(本周的星期一):OnSite日期
解析
输入type=date中的日期是基于系统的日期时间-因此服务器或本地机器。但是,如果我将windows 10的本地日期时间更改为"dd.MM.yyyy",则日期时间选择器不接受jquery脚本中的这个值。我将输入日期的值格式化为这个"YYYY-MM-DD".
--这是一个简单的示例,可以工作:
型号:
[DataType(DataType.Date)]
public DateTime? OnSite { get; set; }查看:
<div class="form-group">
<label asp-for="Project.OnSite" class="control-label"></label>
<input asp-for="Project.OnSite" class="form-control" />
<span asp-validation-for="Project.OnSite" class="text-danger"></span>
</div>JQuery:
var dateFormat = "YYYY-MM-DD";
var openingDate = $(@Html.IdFor(x => x.Project.OpeningDate)).val();
var monday1 = moment(openingDate).day("Monday").day(-6).format(dateFormat);
$(@Html.IdFor(x => x.Project.OnSite)).val(monday1);发布于 2018-01-18 13:12:56
[Display(Name = "Monday")]
[DataType(DataType.Date)]
public DateTime? MondayOfCurrentWeek
{
get
{
DateTime today = DateTime.Today;
int currentDayOfWeek = (int)today.DayOfWeek;
DateTime sunday = today.AddDays(-currentDayOfWeek);
DateTime monday = sunday.AddDays(1);
return monday;
};
set;
}这可能是后端的一个小解决办法。在名为“day”的变量中,您可以每天放置"OpeningDate“,它应该返回您想要的周的星期一的日期,当您得到x.Project.MondayOfCurrentWeek时,您将收到星期一的日期。如果有用的话,发送一些反馈信息。
https://stackoverflow.com/questions/48193586
复制相似问题