2013-05-10 8 views
10

jestem stara się ustawić wartość na wejściu type="date" w Google Chrome: http://jsfiddle.net/ruslans/gNv7H/Knockout.js typu wprowadzanie danych Datą wiążącą w Google Chrome

<input data-bind="value: dateString" type="date"></input> 

var viewModel = { 
    someDate: new Date(parseInt("/Date(1367708400000)/".substr(6))) 
}; 
ko.applyBindings(viewModel); 

Moja data będzie pochodzić z danych JSON, ale najpierw muszę aby dowiedzieć się, jaki format musi być w polu wyboru daty w Chrome, aby rozpoznać powiązanie. Musiałbym zrobić z selektora jQuery i ustawić .val() na boisku? Wydaje się, że ...

Edytuj: zgodnie z this article format daty do ustawienia wartości na wejściu Google musi zawsze wynosić "yyyy-mm-dd". Co jest szkoda, bo używasz jQuery wybór daty dla wszystkich przeglądarek, gdzie nie ma natywnej data istnieć zbieracze.

+0

Należy zauważyć, że zgodnie z projektem normy [W3] (http://www.w3.org/TR/html-markup/input.date.html) to nie będzie chrom specyficzny ale każda przeglądarka będzie/powinna wdrożyć tak: "yyyy-mm-dd" format daty. Przez czemu można skonfigurować wyboru daty jQuery używać tego formatu, więc nie widzę problemu ... – nemesv

+0

format daty wyświetlany będzie lokator specyficzny. Na przykład. dd/mm/rrrr dla nas, MM.DD.RRRR dla Rosji, dd/mm/rrrr dla Wielkiej Brytanii itd u źródła, jednak będzie ona zawsze być JSON format daty. – Tsar

+0

Więc można mieć datę w jakiejkolwiek formie w modelu/źródła. Następnie musisz przekonwertować go na "yyyy-mm-dd" podczas ustawiania wartości swoich wejść. Możesz także skonfigurować jQuery, aby używał tego formatu "yyyy-mm-dd" do przechowywania danych. Musisz także skonfigurować jQuery, a także natywny datepicker chrome, aby wyświetlić go w dowolnym formacie docelowym. Będziesz mieć ostatecznie trzy formatowanie: źródło, format wejścia, format wyświetlacza. Nie widzę tu problemu, tak to działa, gdy trzeba radzić sobie z datami. – nemesv

Odpowiedz

11

Wystarczy prawidłowo sformatować value jak opisano w W3C working draft:

A ważnego pełnym dniem, jak określono w RFC 3339, z dodatkowym zastrzeżeniem, że składnik roku wynosi cztery lub więcej cyfr reprezentujących liczbą większą niż 0

przykład: 1996-12-19

Więc następujące powinny działać:

var viewModel = {  
    dateString: ko.observable('2002-02-02') 
}; 

Demo JSFiddle.

+0

Dzięki za odpowiedź, czy mógłbyś dać mi jakiś pomysł na temat datepicker html5 (typ wejścia "date") z knockout.js bez użycia zmiennych obliczeniowych? tak jak to jest tutaj: http://screencast.com/t/pMtuSV6mxUf – johannesMatevosyan

Powiązane problemy