【发布时间】:2018-09-01 00:45:12
【问题描述】:
我有一把剃须刀 EditorFor 用于日期类型的字段:
@Html.EditorFor(model => model.AvailableEndDateTimeUtc)
我想在生成的日期选择器上设置“更改”事件,但是当手动更改输入中的值或使用日历更改时,我找不到获取事件的解决方案。
我尝试使用 JavaScript 监听器:
$("#AvailableEndDateTimeUtc").on("change", function () {
alert("ok");
});
它适用于手动更改输入,但不适用于日历。
我尝试添加“onchange”事件
@Html.EditorFor(model => model.AvailableEndDateTimeUtc, new { onchange = "myFunction" })
或
@Html.EditorFor(model => model.AvailableEndDateTimeUtc, new { onchange = "myFunction()" })
但它根本不起作用。
这是生成的 HTML 代码:
<div class="input-append date" id="AvailableEndDateTimeUtc-parent" data-date="">
<input class="span2 valid" data-val="true" data-val-date="The field 'Date de fin de disponibilité' must be a date." id="AvailableEndDateTimeUtc" name="AvailableEndDateTimeUtc" type="text" value="" aria-describedby="AvailableEndDateTimeUtc-error" aria-invalid="false">
<span class="add-on"><i class="fa fa-calendar"></i></span>
</div>
编辑 1
当我使用此语法时会生成此代码:
@Html.EditorFor(model => model.AvailableEndDateTimeUtc, new { onchange = "OnChangeEvent()" })
$(function () {
var c = Globalize.culture().calendars.standard;
var fmt = c.patterns["d"];
$("#AvailableEndDateTimeUtc-parent").datetimepicker({
language: 'glob',
format: fmt,
pickDate: true,
pickTime: false,
pickSeconds: false,
pick12HourFormat: false,
maskInput: true,
collapse: true });
});
编辑 2
我尝试添加该代码:
$('#AvailableEndDateTimeUtc-parent').change(function () {
alert("Select change");
});
但只有当我也手动更改输入时才会触发它。
我尝试获取日期选择器并在其上添加事件(我在文档中看到它有一个“onSelect”事件),但它破坏了生成的组件。
此编辑的最后一次尝试:获取现有的日期选择器选项并添加我的事件
$("#AvailableEndDateTimeUtc-parent").data("datetimepicker").options.OnChangeDate = function() {
alert("Select change");
}
我将该代码放在document.ready 上,但$("#AvailableEndDateTimeUtc-parent").data("datetimepicker") 返回“未定义”。但是如果我在控制台中做同样的事情,它会返回组件。
【问题讨论】:
-
我很确定这是一个 jQuery datepicker 下面,所以:stackoverflow.com/questions/6471959/…
-
生成的HTML是输入元素吗?
-
我用生成的 HTML 编辑问题。
-
生成的日期选择器是插件吗?它很可能正在拦截点击事件。如果它是一个插件,它应该有一种方法可以将事件作为 api 的一部分进行操作。
-
我不知道它是否是一个插件,我想知道它是否像@Andrei所说的那样是一个jQuery datePicker
标签: c# jquery asp.net asp.net-mvc razor