Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2015, 18:02
Интересующийся
Отправить личное сообщение для decadent42 Посмотреть профиль Найти все сообщения от decadent42
 
Регистрация: 26.10.2015
Сообщений: 17

Создание виджета "Создать страницу: [title]" При отсутствии результатов в Autocomplet
Здравствуйте, ситуация такая: нужно создать виджет, который появлялся бы, если в базе данных отсутствует запись подобная введённой в поле. Виджет добавляется к списку Autocomplet с текстом "Создать страницу: [title]" , где [title] - данные из поля. Т.е. чтобы виджет показывался не тогда, когда значения autocomplete отсутствовали, а когда среди них не было подобных данных. При нажатии на него срабатывает php функция, которая создаёт такую запись. PHP функцию написал, обычный autocomplete тоже, но вот этот виджет никак не могу придумать, как сделать. Подскажите, пожалуйста!
Файл autocomplete.js с Jquery ui и комментариями:
(function ($) {

Drupal.behaviors.jqe = {
  attach: function (context, settings) {
    $("#jqe-autocomplete", context).makeJqeAutocomplete();
  }// attach
};

$.widget( "jqe.jqeautocomplete", $.ui.autocomplete, {
  // Взял из последней версии (1.10). Чуть увеличил (в оригинале + 1).
  _resizeMenu: function() {
    var ul = this.menu.element;
    ul.outerWidth(Math.max(
    // Firefox wraps long text (possibly a rounding bug)
    // so we add 1px to avoid the wrapping (#7513)
    ul.width("").outerWidth() + 2,
    this.element.outerWidth()
    ));
  },
  // Формируем содержимое одного пункта меню со стилизацией.
  _renderItem: function(ul, item) {
    var line = '<a>' +
      '<span class="jqe-item-bg ' + item.value.type + '"></span>' +
      '<span class="jqe-item-info">[' + item.value.name + ']</span>' +
      '<span class="jqe-item-label">' + item.value.title + '</span>' +
      '<span class="jqe-item-info">(' + item.value.created + ')</span>' +
      '</a>';
    return $('<li></li>')
    .data("item.autocomplete", item)
    .append($(line))
    .appendTo(ul);
  }
});

  $.fn.makeJqeAutocomplete = function() {
    var $input = $(this);
    // Подключаем наш виджет к полю ввода.
    $input.jqeautocomplete({
      source: function(request, response) {
        $.ajax({
          // Определенный модулем путь запроса.
          url: Drupal.settings.basePath + "ajax/jqe-autocomplete",
          type: 'post',
          data: {
            // Текст из поля ввода.
            input: request.term,
            // Ограничение количества для запроса.
            maxItems: 12
          },
          success: function(data) {
            response($.map(data, function(item) {
              return {
                // В качестве значения пункта меню весь объект.
                // В нашем виджете будет доступен как item.value в функции _renderItem.
                value: item
                // Обычно здесь формируется содержимое одного пункта меню.
                // Но поскольку мы хотим его стилизовать, сделаем это в
                // _renderItem нашего виджета.
                //label: "[" + item.name + "] " + item.title + " (" + item.created + ")"
              };
            }));
          }
        });
      },
      // Количество символов в поле ввода, с которого запускается запрос.
      minLength: 2,
      focus: function(event, ui) {
        // Тест в поле ввода будет меняться в зависимости от того
        // пункта меню, над которым находится курсор.
        $input.val(ui.item.value.title);
        return false;
      },
      // Выбрали.
      select: function(event, ui) {
        // nid скрытому полю.
        $('#jqe-autocomplete-nid').val(ui.item ? ui.item.value.nid : 0);
        // текст - в поле.
        $input.val(ui.item ? ui.item.value.title : this.value);
        return false;
      }
    });

    return this;
  };
})(jQuery);

ПОМОГИТЕ!!!
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2015, 19:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

decadent42,
мысли вслух ... строка 50 ... проверили data ... чего-то там нет ... добавили в data хитрый item ... строка 21 проверяем item c чёрной меткой ? ... если да line можно украсить фонариками ... строки 67 и 74 ... проверяем наличие метки -- либо дополняем как обычно, либо за каким-то отправляем на сервер запрос на формирование чего-то там ...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск