【发布时间】:2018-06-19 23:41:36
【问题描述】:
我在我的 asp net core razor 表单中遇到了 jQuery 的问题。我可以使用 jQuery 在文本等输入类型中更改值,但不能更改日期类型,我不知道为什么。
这里是项目模型的一部分,只是属性,我想改变它的形式:
[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、文本框,但我不能输入 =“date”,可能是因为 razor 在后台使用了一些 datetimepicker,这不会让我更改,或者我不知道。 浏览器中生成的表单如下所示: Opening date
这只是我想要更改的输入(到本周的星期一): OnSite date
解决
输入类型=日期中的日期基于系统的日期时间 - 因此服务器或您的本地计算机。但是事件我将我的 Windows 10 的本地日期时间更改为 "dd.MM.yyyy",datetimepicker 不接受来自 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);
【问题讨论】:
-
当浏览器尝试操纵该字段时,我在使用 input type="date" 时遇到了不好的体验。尝试将其更改为 type="text" 看看是否能解决您的问题。
-
是的,这是可能的方式,但我更好奇为什么它不起作用以及如何使它起作用。
标签: jquery razor asp.net-core