Mam formularz zawierający datę i datetime murawę:Client-side nieaktualne input type nie działa
@Html.TextBoxFor(model => model.A, new { @type = "datetime" })
@Html.TextBoxFor(model => model.B, new { @type = "date" })
Model:
public class TestModel
{
[DataType(DataType.Date)]
public DateTime A {get;set;}
[DataType(DataType.Date)]
public DateTime B {get;set;}
}
Korzystając z tych typów wejściowych iPad pokazuje ładny sortowniki daty (czasu). Pola są sprawdzane za pomocą walidacji po stronie klienta. Dla pola datetime (A
) działa, ale pole daty (B
) spowoduje błąd: "wprowadź poprawną datę." Jak rozwiązać ten problem?
Przykłady:
- to IPAD (Safari) wartość datetime jest poprawna (zgodnie MVC walidacji po stronie klienta): 15, rozkład. 2011 9:20
- Ta wartość dla iPada (Safari) jest niepoprawna: 15 grudnia. 2011
Trudno debugować kod na iPadzie, więc nie mam pojęcia, jak Safari zmienia format daty podczas ustawiania atrybutu wartości wejścia.
Edytuj: Odkryłem, że format datetime to uniwersalny format datetime (yyyy-MM-DDTHH:mmZ
), a format daty to yyyy-MM-dd
. Prawdopodobnie walidator po stronie klienta rozumie uniwersalny datetime, a nie yyyy-MM-dd
ze względu na lokalizację.
Proszę podać przykład wejście do 'B' która podnosi„Proszę podać poprawną datę”błąd, ale to rozważyć ważność. – phoog
@ Komentarz usunięty Guillaume: jest prawidłowy HTML, ale nie jest obsługiwany przez każdą przeglądarkę. Ponieważ iPad obsługuje te typy danych wejściowych, używam go tylko w widoku iPada. W zwykłych przeglądarkach używam selektora datetime jQuery. – Marthijn
type = "date" jest nowy w HTML5. Jaki jest Twój typ docty? http://dev.w3.org/html5/markup/input.html – Guillaume