2010-08-25 59 views
1

我定義這個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的日期選擇器;-)

回答

1

也許這可以幫助你:

MVC 2 Editor Template with DateTime

+0

THX的非常快的答覆。但是「just」解釋瞭如何處理/擴展日期選擇器。當日期選擇器失去焦點時,我需要一種調用JavaScript函數ABC()的方法。好。我可以擴展(以某種方式)5個已經存在的jQuery事件。但是,然後我有問題來提出這個新添加的jquery事件? (我們在盤旋,不是嗎?) – user415876 2010-08-25 13:49:07

2

是的,它的愚蠢回答自己問題,但我想分享我的知識。 ;-)

解決方案:

不要使用Html.EditorFor!使用TextBoxesFor

<%: Html.TextBoxFor(model => model.Data.birthday, new { onBlur="javascript:ABC();"})%> 

使用TextBoxFor表示不使用DateTime.ascx。 當「... birthday」在控制器中設置爲非空值時,輸出格式不像在DateTime.ascx中定義的那樣。也意味着將顯示小時,分鐘和時間。 但添加了OnBlur事件!這就是目標!

1

您可以使用Html.EditorFor,但你必須單獨綁定事件:

$(document).ready(function() { 
// bind events to template editors 
$("#Data_birthday").bind('blur', ABC); 
$("#Data_birthday").bind('click', ShowHideC1); 
} 
相關問題