Mam formularz dodawania węzła z odwołaniem do terminu, który korzysta z widżetu autouzupełniania.
Chcę „tid” wypełnionego terminu przez użytkownika korzystającego z widżetu autouzupełniania.
javascript
ajax
sel_space
źródło
źródło
Drupal 7 i 8 zapewniają w tej chwili generowanie zdarzeń autouzupełniania jQuery bez żadnego niestandardowego kodu.
W Drupal 7
autocompleteSelect
wydarzenie zostało dodane w numerze Drupal # 365241 . (Clive wspomniał, że to się dzieje, kiedy opublikował swoją odpowiedź).Drupal 8 korzysta z widgetu autouzupełniania interfejsu użytkownika jQuery .
autocompleteclose
Zdarzenie jest zdarzeniem jQuery UI najbardziej podobny do D7autocompleteSelect
imprezy. W D8autocompleteselect
również zostanie wyzwolone zdarzenie interfejsu użytkownika jQuery, ale wywołanie zwrotne Ajax na nim nie otrzyma zaktualizowanych wartości stanu formularza.autocompleteclose
wywołania zwrotne są dostarczane ze zaktualizowanymi wartościami stanu formularza, co zwykle jest tym, czego chcesz.Jak wskazały inne odpowiedzi, możesz skorzystać z danych zdarzeń w przeglądarce klienta, używając jQuery w module obsługi zdarzeń lub Drupal.behaviors ( Drupal 7 , Drupal 8 ). W Drupal 7 używałbyś tego
autocompleteSelect
wydarzenia, a na Drupal 8autocompleteclose
.Jeśli potrzebujesz wartości w kodzie PHP, możesz użyć wywołania zwrotnego Ajax. Oto kilka wskazówek, jak to zrobić w Drupal 7 lub w Drupal 8 .
źródło
Musiałem użyć zachowania, aby to zadziałało (dzięki problemowi wspomnianemu przez Clive i temu komentarzowi: https://www.drupal.org/node/365241#comment-9575707 ):
źródło
W Drupal 8 to się zmieniło. Możesz zastąpić funkcjonalność następującym kodem.
Przesłania kod w
core/misc/autocomplete.js
.Następnie w kodzie możesz słuchać
źródło