2012-03-19 55 views
1

我使用MVC 4 Beta版,但我相信這也將適用於MVC 3jQuery Mobile的和MVC 3或(MVC 4測試版)日期驗證格式問題

我有一個模型定義爲:

public class MealViewModel 
{ 
[Required] 
public string Title { get; set; } 
[Required] 
public DateTime Date { get; set; } 
public bool Type { get; set; } 
} 

我已經完全正確閱讀JQM文件和設置一個JQM頁面。 它與data-role =「page」等div。 在該頁面是一個窗體。在這種形式下是一個類型日期的字段。下面是表格中的一個片段。

<div class="editor-label"> 
@Html.LabelFor(model => model.Date) 
</div> 
<div class="editor-field"> 
@Html.TextBox("Date",null,new{type="Date"}) 
@Html.ValidationMessageFor(model => model.Date) 
</div> 

我在iphone上測試頁面,它看起來不錯,而且工作完美。如果所有字段都爲空,我會提交表單並按預期驗證必填字段。 JQM的特別之處在於,當我觸摸日期輸​​入字段時,它會自動彈出iPhone日期輸入鍵盤並輸入今天的日期以開始。這很棒。我接受日期並重新提交表單。

現在,這是當我遇到驗證問題。它會呈現一條消息「字段日期必須是日期」IOS中日期的格式是「2012年3月16日.JQuery驗證必須以另一種格式預計日期。

如何更改格式「2012年3月16日」是一個有效的日期?改變必須與MVC工作。

請幫忙,謝謝。

回答

0

它看起來像你需要的格式喂,我遇到了類似的問題在這裏是我的dateTime編輯器模板中的代碼。

請注意它使用:http://dev.jtsage.com/cdn/datebox/latest/jquery.mobile.datebox.min.js

@model System.DateTime 
@{ 
    var id = this.ViewData.TemplateInfo.GetFullHtmlFieldId(""); 
    var name = this.ViewData.TemplateInfo.GetFullHtmlFieldName(""); 


    <input name="@name" id="@id" type="date" data-role="datebox" data-options='{"mode": "flipbox","noButtonFocusMode": true, "dateFormat": "DD/mm/YYYY"}' value="@Model.Date.ToShortDateString()"> 
    } 

如果玩弄dateFormat,它應該適合您的需求。

1

試圖改變這個在您的jquery.validate.js

一部開拓創新 - >

return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); 

正確 - >

var d = new Date(); 
return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value))); 

的瀏覽器不檢測當前的日期和這是一個已知的bug