2011-12-15 21 views
6

काम नहीं करता मैं एक रूप एक तारीख और datetime क्षेत्र युक्त है:क्लाइंट-साइड सत्यापन

@Html.TextBoxFor(model => model.A, new { @type = "datetime" }) 
@Html.TextBoxFor(model => model.B, new { @type = "date" }) 

मॉडल:

public class TestModel 
{ 
    [DataType(DataType.Date)] 
    public DateTime A {get;set;} 

    [DataType(DataType.Date)] 
    public DateTime B {get;set;} 
} 

इन इनपुट प्रकार का उपयोग करके एक iPad अच्छा चलता तारीख (समय) पिकर्स। फ़ील्ड क्लाइंट-साइड सत्यापन का उपयोग करके मान्य हैं। datetime क्षेत्र (A) यह काम करता है, लेकिन आज क्षेत्र (B) एक त्रुटि बढ़ा देंगे के लिए: "। कोई मान्य दिनांक दर्ज करें" मैं इसे कैसे हल करूं?

उदाहरण:

  • यह iPad (सफारी) दिनांक के लिए मूल्य है वैध (MVC क्लाइंट साइड मान्यता के अनुसार): 15 dec। 2011 09:20
  • यह iPad (सफारी) तिथि मान अमान्य है: 15 dec। 2011

यह एक iPad पर डिबग कोड मुश्किल है, इसलिए मैं कोई सुराग नहीं कैसे सफारी में परिवर्तन दिनांक स्वरूप जब इनपुट के मूल्य विशेषता सेटिंग है।

संपादित करें: मुझे पता चला दिनांक प्रारूप, सार्वभौमिक दिनांक स्वरूप (yyyy-MM-DDTHH:mmZ) है, जबकि दिनांक स्वरूप yyyy-MM-dd है। शायद क्लाइंट साइड सत्यापनकर्ता सार्वभौमिक datetime और स्थानीयकरण के कारण नहीं yyyy-MM-dd समझता है।

+0

'b' है कि" कोई मान्य दिनांक दर्ज करें "त्रुटि को जन्म देती है के लिए इनपुट का एक उदाहरण दे लेकिन यह है कि आप वैध पर विचार करें। – phoog

+0

@ Guillaume की हटाई गई टिप्पणी: यह मान्य HTML है, लेकिन वास्तव में प्रत्येक ब्राउज़र द्वारा नियंत्रित नहीं किया जाता है। चूंकि आईपैड इन इनपुट प्रकारों का समर्थन करता है, इसलिए मैं इसे केवल आईपैड व्यू में उपयोग करता हूं। सामान्य ब्राउज़रों के लिए मैं एक jQuery डेटाटाइम पिकर का उपयोग करता हूं। – Marthijn

+0

प्रकार = "दिनांक" एचटीएमएल 5 में नया है। आपका सिद्धांत क्या है? http://dev.w3.org/html5/markup/input.html – Guillaume

उत्तर

4

मैं ठीक उसी समस्या थी और जब एक मोबाइल साइट मैं अपने iPhone पर विकसित कर रहा हूँ देखने के विश्वास से परे maddened किया गया था। नीचे दिए गए मुद्दे में चर्चा ने मेरे लिए इसे हल किया।

https://github.com/jzaefferer/jquery-validation/issues/20। एचटीएमएल 5 तारीख इनपुट प्रकार एक को खिलाने के लिए

@model DateTime? 
@Html.TextBox("myDate", ViewData.Model.ToIso8601FullDate(), new { type = "date", @class = "text-box single-line" }) 

और एक आसान विस्तार विधि:

इसके अलावा, एक सहज तरीके से इस के साथ दूर जाना है, मैं दिनांक डेटा प्रकार के लिए निम्नलिखित उस्तरा संपादक खाका बनाया प्रारूप यह spec for input type=date के अनुसार काम करने के साथ प्राप्त है:

public static string ToIso8601FullDate(this DateTime? d) 
{ 
    if (!d.HasValue) return null; 

    return d.Value.ToString("yyyy-MM-dd"); 
} 
संबंधित मुद्दे