Form - автодополнение

Комментарии ()

Автодополнение очень полезная и удобная фича. Дабы не плодить каждый раз рутинны по роботе с ней, в модуль Form добавлен функционал, поддерживающий ajax autocomplete на базе jQuery.

Каждое автодополнение характеризируется именем, и заранее описывается в form_get_autocomplete_ajax_post.php. Cам елемент ввода должен принадледать к классу autocomplete и иметь data-атрибут autocomplete-name который содержит имя автодополнения..

html

<input type="text" name="login" id="login" value=""   width="" style="" class="autocomplete" placeholder="введите Логин" data-autocomplete-name="users_login">

Требования к елементу ввода:

  • елемент ввода должен принадлежать к классу autocomplete ( class="... autocomplete ...")
  • Наличие атрибута  data-autocomplete-name c именем автодополнения

Пример использования

#elementInputText
$element = array(
    'attr' => array(
        'name' => null,
        'type' => 'text',
        'alias' => null,
        'value' => false,
        'disabled' => false,
        'placeholder' => null,
        'value' => null,
        'class' => 'autocomplete',
        'data' => array('autocomplete-name'=>'users_login')
    ),
    'group' => array(
        'help' => null,
        'help_type' => 'block',
        'label' => null
    )
);
$tpl->setVariable('elementName', $form->getElement($element));

Алгоритм работы

  • При вводе текста в елементе выполняется функция $(".autocomplete").autocomplete(файл system.js), которая выполняент ajax-запрос form_get_autocomplete_ajax.  Если ajax-запрос прошел успешно - мы видим варианты автодополнения. Передаються на сервер в запросе также все data атрибуты, в которых можно передать дополнительные параметры и использовать их
  • form_get_autocomplete_post.php - в целях безопасности, для каждого autocomplete описывается алгоритм выборки данных.

Webit.in.ua 2013