Mam kod JS, w którym po zmianie pola wywoływana jest procedura wyszukiwania. Problem polega na tym, że nie mogę znaleźć żadnych zdarzeń jQuery, które uruchomią się, gdy Datepicker zaktualizuje pole wejściowe.
Z jakiegoś powodu zdarzenie zmiany nie jest wywoływane, gdy Datepicker aktualizuje pole. Po wyświetleniu kalendarza zmienia się fokus, więc nie mogę z niego korzystać. Jakieś pomysły?
jquery
datepicker
zbestzeus
źródło
źródło
Odpowiedzi:
Możesz użyć
onSelect
zdarzenia datepicker .Przykład na żywo :
Pokaż fragment kodu
Niestety,
onSelect
odpala po każdym wybraniu daty, nawet jeśli się nie zmieniła. Jest to wada projektowa w datepicker: zawsze uruchamia sięonSelect
(nawet jeśli nic się nie zmieniło) i nie wywołuje żadnego zdarzenia na podstawie danych wejściowych przy zmianie. (Jeśli spojrzysz na kod z tego przykładu, szukamy zmian, ale nie są one podnoszone.) Prawdopodobnie powinno to wywołać zdarzenie na wejściu, gdy coś się zmieni (być może zwykłechange
zdarzenie lub być może datepicker- konkretny).Jeśli chcesz, możesz oczywiście zrobić
change
zdarzenie winput
ogniu:To uruchomi
change
bazęinput
dla każdego modułu obsługi podłączonego przez jQuery. Ale znowu to zawsze odpala. Jeśli chcesz strzelać tylko na prawdziwą zmianę, musisz zapisać poprzednią wartość (być może poprzezdata
) i porównać.Przykład na żywo :
Pokaż fragment kodu
źródło
change
obsługi” i dlatego zaktualizowałem odpowiedź. :-)Odpowiedź TJ Crowdera ( https://stackoverflow.com/a/6471992/481154 ) jest bardzo dobra i nadal pozostaje dokładna. Wywołanie zdarzenia zmiany w funkcji onSelect jest tak blisko, jak to tylko możliwe.
Istnieje jednak ładna właściwość obiektu datepicker (
lastVal
), która pozwoli warunkowo wywołać zdarzenie zmiany tylko w przypadku rzeczywistych zmian bez konieczności samodzielnego przechowywania wartości (wartości):Następnie po prostu obsługuj zdarzenia zmiany jak normalnie:
źródło
lastVal
jest jednak ;-)lastVal
nie istnieje na obiekcie datepicker, przynajmniej w moich testach. To rozwiązanie zawsze wywoła zmianę.Twój szuka onSelect imprezy w obiekcie datepicker:
źródło
Napisałem to, ponieważ potrzebowałem rozwiązania, aby wywołać zdarzenie tylko w przypadku zmiany daty.
To proste rozwiązanie. Za każdym razem, gdy okno dialogowe się zamyka, testujemy, czy dane się zmieniły. Jeśli tak, uruchamiamy niestandardowe zdarzenie i resetujemy zapisaną wartość.
Teraz możemy podłączyć moduły obsługi tego niestandardowego zdarzenia ...
źródło
źródło
Korzystam z bootstrap-datepicker i żadne z powyższych rozwiązań nie działało dla mnie. Ta odpowiedź pomogła mi ..
bootstrap datepicker zmiana daty zdarzenie nie uruchamia się podczas ręcznej edycji dat lub czyszczenia daty
Oto, co zastosowałem:
Mam nadzieję, że to może pomóc innym.
źródło
W jQueryUi 1.9 udało mi się sprawić, aby działał poprzez dodatkową wartość danych oraz kombinację funkcji beforeShow i onSelect:
Pracuje dla mnie :)
źródło
Wiem, że to stare pytanie. Ale nie mogłem pobrać zdarzenia jquery $ (this) .change (), aby poprawnie uruchomić onSelect. Więc zastosowałem następujące podejście do uruchomienia zdarzenia zmiany za pośrednictwem waniliowej wersji js.
źródło
Spróbuj tego
Mam nadzieję że to pomoże:)
źródło
Próbować :
źródło
Podręcznik mówi:
Więc:
Pracuje dla mnie.
źródło
Moje rozwiązanie:
źródło
Moje rozwiązanie to:
źródło
DatePicker zaznaczony kod zdarzenia zmiany wartości poniżej
źródło
jeśli używasz wdcalendar, to ci pomoże
Wydarzenie onReturn działa dla mnie
Mam nadzieję, że to pomoże
źródło
Myślę, że twój problem może polegać na konfiguracji selektora dat. Dlaczego nie odłączysz wejścia ... nie używaj altField. Zamiast tego jawnie ustaw wartości podczas uruchamiania onSelect. To da ci kontrolę nad każdą interakcją; pole tekstowe użytkownika i datepicker.
Uwaga: Czasami musisz wywołać procedurę na .change (), a nie na .onSelect (), ponieważ onSelect można wywoływać przy różnych interakcjach, których się nie spodziewasz.
Pseudo kod:
źródło