2013-05-22 28 views
33

Używając jquery i Bootstrap Datepicker, jak uzyskać nową wartość daty, którą wybrałem za pomocą Bootstrap Datepicker? FYI, używam Rails 3 i Coffescript.Jak uzyskać wybraną wartość daty podczas korzystania z Bootstrap Datepicker?

I skonfigurować datapicker używając:

<input id="startdate" class="span2 datepicker" type="text" value="" name="startdate" default="2013-05-21" data-date="2013-05-21" data-behavior="datepicker"> 
<%= submit_tag 'Get Data using date', :id => 'get_data' %> 

$(".datepicker").datepicker 
     endDate: new Date 
     format: "yyyy-mm-dd" 
     autoclose: true 
     minViewMode: 1 
     todayBtn: "linked" 

Gdy użytkownik kliknie „Get danych za datę” przycisk obok niego, będę używać jQuery, aby uzyskać nową wartość terminie wyznaczonym przez datepicker, uniemożliwić przesłanie formularza i uruchomić żądanie ajax przy użyciu tej wartości daty. Wszystkie ajax działa dobrze, z wyjątkiem otrzymania poprawnej nowej wartości daty. Próbowałem obu poniższych i nie daje mi nowej daty, tylko zwraca domyślne ustawienia, które początkowo ustawiłem.

sd1 = $('#startdate').attr('value') 
console.log sd1 

sd2 = $('#startdate').attr('data-date')) 
console.log sd2 

czuję się naprawdę głupio teraz, ale nie mogę dowiedzieć się, jak uzyskać nową wartość terminie wyznaczonym przez bootstrap datepicker.

Odpowiedz

40

Można spróbować to

$('#startdate').val() 

lub

$('#startdate').data('date') 
+0

Dla mnie pierwszy $ ("# startdate"). Val() działał idealnie. Dzięki – Ryan

+0

Czy możesz mi powiedzieć, proszę, który komponent Datepicker używasz? Nie ma oficjalnego, i partii 3d, dlatego pytam. – momijigari

+0

dziękuję bardzo, proszę pana ... szukałem go od 6 godzin ... teraz mam to działa ... dziękuję bardzo proszę pana ... i dzięki dzięki ALLAH ... –

8

Generalnie

$('#startdate').data('date') 

jest najlepszy bo

$('#startdate').val() 

nie działa, jeśli masz datepicker "inline"

3

ten pracuje ze mną inline datepicker (i inne)

$('#startdate').data('datepicker').date 
43

Dla bootstrap datepicker można użyć:

$("#inputWithDatePicer").data('datepicker').getFormattedDate('yyyy-mm-dd'); 
+0

Bardzo pomocna! Gdy datepicker ma wiele dat, data zwracana w zdarzeniach jest zawsze pierwszą w sekwencji, niezależnie od daty wybranej w kalendarzu. Obiekt 'data' zawsze ma faktyczną klikniętą datę. – TombMedia

+0

To zadziałało dla mnie. Wielkie dzięki! –

24

Bootstrap datepicker (pierwszy wynik wyszukiwania za pomocą programu bootstrap) ma metodę uzyskania wybranej daty.
http://bootstrap-datepicker.readthedocs.org/en/release/methods.html#getdate

getDate:
Zwraca datę zlokalizowany obiekt reprezentujący datę wewnętrznego przedmiot pierwszej datepicker w wyborze.
W przypadku sortowników wielodzielkowych zwraca wybraną najnowszą datę.

$('.datepicker').datepicker("getDate") 

lub

$('.datepicker').datepicker("getDate").valueOf() 
+3

Dlaczego autor nie podaje przykładu ?! szukali tej głupiej metody zbyt długo. I dlaczego nie jest to odpowiedź ?! – cauchy

1

Spróbuj przy użyciu HTML jak tutaj:

var myDate = window.document.getElementById("startdate").value; 
+0

Cofnąłem cię przez pomyłkę. Czy możesz edytować swoją odpowiedź, aby móc poprawić przegłosowanie? Przepraszam za to. – Maxime

0

Próbowałem z powyższych odpowiedzi, ale nie pracował dla mnie; Tak więc, jak polecił użytkownik3475960, użyłem $('#startdate').html(), który dał mi tekst HTML, więc użyłem go w razie potrzeby ... Może ktoś skorzysta z niego ..

2

Jeśli już szereg dat już podkreślono i chcą określić, które data ostatniego kliknięcia następnie musisz następujące:

$('#startdate').data('datepicker').viewDate 

viewDate zwraca obiekt Date JavaScript więc Będziesz musiał to odpowiednio znieść.

Powiązane problemy