У меня есть форма добавления узла со ссылкой на термин, которая использует виджет автозаполнения.
Я хочу, чтобы пользователь использовал "tid" заполненного термина с помощью виджета автозаполнения.
javascript
ajax
sel_space
источник
источник
В настоящее время Drupal 7 и 8 обеспечивают генерацию событий автозаполнения jQuery без какого-либо специального кода.
В Drupal 7
autocompleteSelect
событие было добавлено в выпуске Drupal # 365241 . (Клайв упомянул, что это происходило, когда он опубликовал свой ответ.)Drupal 8 использует виджет автозаполнения пользовательского интерфейса jQuery . Это
autocompleteclose
событие пользовательского интерфейса jQuery, наиболее похожее наautocompleteSelect
событие D7 . В D8autocompleteselect
также будет инициировано событие пользовательского интерфейса jQuery, но обратный вызов Ajax для него не будет получать обновленные значения состояния формы.autocompleteclose
обратные вызовы предоставляются с обновленными значениями состояния формы, что обычно является тем, что вы хотите.Как указали другие ответы, вы можете использовать данные о событиях в браузере клиента, используя jQuery on обработчик событий, или Drupal.behaviors ( Drupal 7 , Drupal 8 ). В Drupal 7 вы используете
autocompleteSelect
событие, а в Drupal 8autocompleteclose
.Если вам нужно значение в вашем PHP-коде, можно использовать обратный вызов Ajax. Вот несколько советов, как это сделать в Drupal 7 или в Drupal 8 .
источник
Мне нужно было использовать поведение, чтобы заставить его работать (благодаря проблеме, упомянутой Клайвом, и этому комментарию: https://www.drupal.org/node/365241#comment-9575707 ):
источник
В Drupal 8 это изменилось. Вы можете переопределить функциональность с помощью следующего кода.
Переопределяет код в
core/misc/autocomplete.js
.Тогда в вашем коде вы можете слушать
источник