2011-12-09 31 views
1

在我的MVC 2應用程序中,我有很多很多輸入字段的視圖。其中很多都包含DateTime變量。jQuery - 通過添加類來執行功能?

我使用datepicker jQuery插件來幫助用戶選擇日期。這也使我能夠做到以下幾點在我的母版:

$(document).delegate(".hasDatepicker", "keyup", function() { 
      this.value = this.value.replace(/[^0-9\.\/]/g, ''); 
}); 

這是使用不正確的字符,如果他們喜歡敲消除用戶。由於Datepicker將自己的類添加到datepicker-elements中,因此我無法使用該類自動清理輸入。 這裏沒有問題,這是工作的一部分,它應該。

但是,問題是,當我打開編輯視圖時,文本框填充「21/05/2012 0:00:00」。一旦你開始使用Datepicker插件,它就會變成只有日期,因爲它應該。 要從文本中刪除時間部分,我想這樣做:

$(".hasDatepicker").each(function() { 
    $(this).val($this.val().replace(" 0:00:00","")); 
}); 

這在我看來是最簡單的解決方案。

但是我不得不將它添加到每個頁面,我想知道是否有一種方法可以使.delegate()版本。東西沿線

$(document).delegate(".hasDatepicker", SOME_EVENT, function() { 
      $(this).val($this.val().replace(" 0:00:00","")); 
}); 

問題是,SOME_EVENT應該是什麼?我想這時候已經加入了「hasDatepicker」級,被觸發,這樣我知道哪些文本框以清除(還有其他的文本框的言論等也含有該字符串,但這些應該更換。

是否有這樣的事件觸發類改變? 或者任何其他方式來解決這個問題,我不必複製粘貼到每一頁?:)

+0

千萬用戶需要能夠在文本框中鍵入?你能強迫他們總是使用JQuery日期時間選擇器嗎? –

回答

1

爲什麼要使用這種複雜的方式來編輯日期格式時,jQuery的日期選擇器有一個內置的功能只是使用dateformat選項做:

來回jQuery UI的文檔:

解析和顯示日期的格式。此屬性是 的區域化屬性之一。有關可能的 格式的完整列表,請參閱formatDate函數。

代碼示例

Initialize a datepicker with the dateFormat option specified. 
$(".selector").datepicker({ dateFormat: 'yy-mm-dd' }); 
Get or set the dateFormat option, after init. 
//getter 
var dateFormat = $(".selector").datepicker("option", "dateFormat"); 
//setter 
$(".selector").datepicker("option", "dateFormat", 'yy-mm-dd'); 
0

我建議你在服務器上使用格式,所以時間部分不會被填充到文本框中。像:new DateTime().ToShortDateString()或通過爲此創建特殊格式。

你可以使用EditorFor等記載here

+0

對不起,如果這是一個愚蠢的問題,但是如果你使用「Html.TextBoxFor(x => x.StartDate,...」?問題是我沒有填充文本框,MVC正在爲我做這件事:)而且Entity Framework持有StartDate變量,所以如果我必須手工完成,我將不得不添加變量到我的模型並手動添加並從那裏檢索它們? – Flater

+0

使用'Html.EditorFor(x => x.StartDate,...)'併爲DateTime創建一個自定義EditorTemplate(就像我在答案中的鏈接中所述) –