DateTime - > Textbox(jquery!) - > EditorFor(DateTime.ascx) - >添加javascript事件。怎么样?

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的日期选择器;-)

也许这可以帮助你:

MVC 2 Editor Template with DateTime

+0

THX的非常快的答复。但是“just”解释了如何处理/扩展日期选择器。当日期选择器失去焦点时,我需要一种调用JavaScript函数ABC()的方法。好。我可以扩展(以某种方式)5个已经存在的jQuery事件。但是,然后我有问题来提出这个新添加的jquery事件? (我们在盘旋,不是吗?) – user415876 2010-08-25 13:49:07

是的,它的愚蠢回答自己问题,但我想分享我的知识。 ;-)

解决方案:

不要使用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); 
}