Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2015, 10:25
Новичок на форуме
Отправить личное сообщение для Mister N Посмотреть профиль Найти все сообщения от Mister N
 
Регистрация: 11.05.2012
Сообщений: 7

Autocomplete ui и this в его событиях.
Доброго времени. У меня задача сделать что-нибудь типа вот такой вот штуки, как здесь в примере "2. Multiple choose"
Из формы нужно отправлять не введенные в инпут аутокомплита Слова, а их кодовые обозначения, причем в том порядке, в котором их выбрали. Два слова, введенные в разном порядке дают два разных результата.
Так вот, в чем у меня проблема. В виджите ui события принимают два аргумента - собственно событие event и ui - объект с данными, которые нужно ввести в инпут. Самое главное, что в this при этом DOM-объект инпута, на котором аутокомплит. Короче, я не могу написать что-то типа
$( "#tags" ).autocomplete({
      myObj:{},
      myMethod:func....
      select: function( event, ui ) {
             this.myObj[1] = ui ;
             this.myMethod(ui.label);
      }
    });

Что очень неудобно. В фабрике виджитов можно переопределить только методы, которые отрисовывают меню. _renderItem _renderMenu _resizeMenu
Можно ли каким-то образом таки расширить функционал autocomplete или для выполнения задачи нужно будет писать свой? Вроде все есть, немного дополнить остается....
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2015, 12:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Mister N,
<!doctype html>
<html lang="en">
<head>
   <meta charset="utf-8">
  <title>autocomplete demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

</head>

<body>
<label for="autocomplete">Select: </label>
<input id="userSearch">
<script>
function split(val){
  return val.split( /,\s*/ );
}
var data = [{"label":"orange","id":"l_25"},{"label":"apple","id":"l_38"},{"label":"banana","id":"l_44"}];
$( "#userSearch" ).autocomplete({
  source: function( request, response ) {
          response($.map(data, function(item) {
              return {
                label: item.label,
                value: item.id
              }
            }))
      },

  select: function(event, ui){
    var terms = split(this.value);
    terms.pop();
    terms.push(ui.item.value);
    terms.push("");
    this.value = terms.join(", ");
    return false;
  },
      minLength: 0,
      cache: false
});
</script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Иетересные страницы истории Kosmos Оффтопик 14 21.07.2013 20:05
jq autocomplete (оптимизация) skynet-mfd jQuery 2 22.04.2013 17:32
удалить подключенный плагин, а затем включить его FedyaLutkovski Элементы интерфейса 6 20.03.2013 11:37
<select> и его оформление. Viral Элементы интерфейса 6 18.05.2011 10:46