Как повесить автокомплит на любое поле страницы?

Аватар пользователя strelkov.av strelkov.av 11 июня 2020 в 12:01

Добрый день, делаю автокомплит по статье http://xandeadx.ru/blog/drupal/344
Столкнулся с проблемой ввиду своей не высокой компетентности Smile

В примере xandeadx сам создаёт страницу с полем, и подключает ей js

jquery_autocomplete.js

(function ($) {

  Drupal.behaviors.jqueryui_autocomplete = {
    attach: function (context, settings) {
      $('input[name="title"]').autocomplete({
        source: Drupal.settings.basePath + 'test/autocomplete'
      });
    }
  };

}(jQuery));

jquery_autocomplete.module


<?php

/**
 * Implements hook_menu()
 */
function jqueryui_autocomplete_menu() {
  
$items['test/form'] = array(
    
'page callback' => 'drupal_get_form',
    
'page arguments' => array('jqueryui_autocomplete_test_form'),
    
'access arguments' => array('access content'),
  );
  
$items['test/autocomplete'] = array(
    
'page callback' => 'jqueryui_autocomplete_autocomplete',
    
'access arguments' => array('access content'),
  );
  return 
$items;
}

/**
 * Form builder
 */
function jqueryui_autocomplete_test_form() {
  
$form['title'] = array(
    
'#type' => 'textfield',
    
'#title' => 'Title',
  );
  
  
$form['#attached']['library'][] = array('system''ui.autocomplete');
  
$form['#attached']['js'][] = drupal_get_path('module''jqueryui_autocomplete') . '/jqueryui_autocomplete.js';
  
  return 
$form;
}

/**
 * Menu callback
 */
function jqueryui_autocomplete_autocomplete() {
  
$titles db_select('node''n')
    ->
fields('n', array('title'))
    ->
condition('n.title''%' db_like($_GET['term']) . '%''LIKE')
    ->
execute()
    ->
fetchCol();
    
  
drupal_json_output($titles);
}
?>

У меня ситуация такая, что мне нужно создавать страницу с формой, у меня она уже есть и это раскрытый фильтр Views

Подскажите пожалуйста, как в моем случае например этот колбэк привязать к моему полю

<input type="text" id="my_custom_input">

Комментарии

Аватар пользователя ivnish ivnish 11 июня 2020 в 14:27

Если я правильно понял вопрос, то вместо

     
$('input[name="title"]').autocomplete({
  source: Drupal.settings.basePath + 'test/autocomplete'
});

нужно

     
$('#my_custom_input').autocomplete({
  source: Drupal.settings.basePath + 'test/autocomplete'
});
Аватар пользователя strelkov.av strelkov.av 12 июня 2020 в 21:08

Не совсем, т.к. так не будет работать, потому что похоже здесь

<?php
function jqueryui_autocomplete_test_form() {
  
$form['title'] = array(
    
'#type' => 'textfield',
    
'#title' => 'Title',
  );
  
  
$form['#attached']['library'][] = array('system''ui.autocomplete');
  
$form['#attached']['js'][] = drupal_get_path('module''jqueryui_autocomplete') . '/jqueryui_autocomplete.js';
  
  return 
$form;
}
?>

той форме ещё подключается кастомный скрипт, и на моей сторонней форме такого нет, и в итоге после таких изменений ничего не срабатывает :/