DateTime - > Textbox(jquery!) - > EditorFor(DateTime.ascx) - >添加javascript事件。怎么样?
问题描述:
我定义这个DateTime.ascxDateTime - > Textbox(jquery!) - > EditorFor(DateTime.ascx) - >添加javascript事件。怎么样?
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%: Html.TextBox( string.Empty,
(Model.HasValue ? Model.Value.ToString("dd.MM.yyyy") : string.Empty),
new { @class = "whatever"
}
)%>
和ASPX网站看起来如此:
<%: Html.EditorFor(model => model.Data.birthday) %>
现在的想法是,一个javascript函数 “ABC()” 被称为 时(意思是“onBlur”事件) (理想情况下:trextbox的值传递给被调用的函数“ABC(birtday.value)”) 但我不想改变DateTime.ascx最终,所有(!)EditorFor(对于Datetimes)将有一个javascript函数调用!
我尝试: 这
<%: Html.EditorFor(model => model.Data.birthday, "onBlur='javascript:ABC();'", "birthday") %>
结果
<input class="whatever" id="birthday" name="birthday" type="text" value="25.08.2010" />
不过的onblur/javascript函数调用不集。
而且
<%: Html.EditorFor(model => model.Data.birthday, new { onClick="javascript:ShowHideC1();"}) %>
不工作要么。
(下一步就是那么这个文本框是“当然”一个jQuery的日期选择器;-)
答
是的,它的愚蠢回答自己问题,但我想分享我的知识。 ;-)
解决方案:
不要使用Html.EditorFor
!使用TextBoxesFor
!
<%: Html.TextBoxFor(model => model.Data.birthday, new { onBlur="javascript:ABC();"})%>
使用TextBoxFor表示不使用DateTime.ascx。 当“... birthday”在控制器中设置为非空值时,输出格式不像在DateTime.ascx中定义的那样。也意味着将显示小时,分钟和时间。 但添加了OnBlur事件!这就是目标!
答
您可以使用Html.EditorFor,但你必须单独绑定事件:
$(document).ready(function() {
// bind events to template editors
$("#Data_birthday").bind('blur', ABC);
$("#Data_birthday").bind('click', ShowHideC1);
}
THX的非常快的答复。但是“just”解释了如何处理/扩展日期选择器。当日期选择器失去焦点时,我需要一种调用JavaScript函数ABC()的方法。好。我可以扩展(以某种方式)5个已经存在的jQuery事件。但是,然后我有问题来提出这个新添加的jquery事件? (我们在盘旋,不是吗?) – user415876 2010-08-25 13:49:07