jQuery Autocomplete - Левая кнопка мыши не запускается Выбрать событие - PullRequest
1 голос
/ 01 ноября 2011

Люди,

Привет. Я погуглила и переполнилась, но не нашла ответа. Возможно, это потому, что я обладаю средним опытом работы с jQuery / javascript.

jQuery - 1.6.3
Пользовательский интерфейс jQuery - 1.8.16

Тестирование в Firefox 7.0.1

У меня есть простой оператор console.log () в событии select вызова автозаполнения. Клавиатура запускает его. Щелчок левой кнопкой мыши не.

Я не думаю, что речь идет об использовании ui.item.value правильно (как и другие вопросы здесь), но я рад ошибаться.

Если кто-то может помочь, это будет очень признательно.

Код:

<script type="text/javascript">
 $(function() { 
  $("#fieldname").autocomplete({ 
   source: function(request, response) { 
    $.ajax({ 
     url: "feed.webservice?term=" + request.term, 
     dataType: "xml", 
     success: function(xml) { 
      var data = $("record",xml).map(function() { 
       return { 
        id: $("id", this).text(), 
        label: $("label", this).text(), 
        value: $("value", this).text() 
       }; 
      }); 
      response(data); 
     } 
    }); 
   }, 
   minLength: 3, 
   select: function(event, ui) { 
    console.log("User selected: " + ui.item.value); 
   } 
  }); 
 });
</script>
  • К вашему сведению, код для извлечения xml-канала, возможно, может использовать некоторую очистку, но в данный момент все вроде бы работает нормально. Если там нет чего-то, что крутится с помощью мышки.

Пример XML-кода:

<records>
<record><id>3566</id><label>1 Belmore Road</label><value>1 Belmore Road</value></record>
<record><id>9053</id><label>1 Chalmers Street, Belmore</label><value>1 Chalmers Street, Belmore</value></record>
<record><id>9872</id><label>1 Dinora Street, Belmore</label><value>1 Dinora Street, Belmore</value></record>
<record><id>8717</id><label>1 Norma Avenue, Belmore</label><value>1 Norma Avenue, Belmore</value></record>
<record><id>8776</id><label>1/107A Belmore Road, Peakhurst</label><value>1/107A Belmore Road, Peakhurst</value></record>
<record><id>2326</id><label>1/109 Belmore Road, Peakhurst</label><value>1/109 Belmore Road, Peakhurst</value></record>
<record><id>6026</id><label>1/17 Drummond Street, Belmore</label><value>1/17 Drummond Street, Belmore</value></record>
<record><id>6346</id><label>1/221-223 Belmore Road South Road, Riverwood</label><value>1/221-223 Belmore Road South Road, Riverwood</value></record>
<record><id>8038</id><label>1/33 Anderson Street, Belmore</label><value>1/33 Anderson Street, Belmore</value></record>
<record><id>1831</id><label>1/38 Sharp, Belmore</label><value>1/38 Sharp, Belmore</value></record>
<record><id>8711</id><label>1/40 Yangoora Road, Belmore</label><value>1/40 Yangoora Road, Belmore</value></record>
<record><id>1837</id><label>1/5 Allan, Belmore</label><value>1/5 Allan, Belmore</value></record>
<record><id>8241</id><label>1/50 Albert Street, Belmore</label><value>1/50 Albert Street, Belmore</value></record>
<record><id>5315</id><label>1/58 Belmore Road</label><value>1/58 Belmore Road</value></record>
<record><id>5317</id><label>1/58 Belmore Road, Peakhurst</label><value>1/58 Belmore Road, Peakhurst</value></record>
<record><id>4232</id><label>1/65 Lucerne Street, Belmore</label><value>1/65 Lucerne Street, Belmore</value></record>
<record><id>1988</id><label>1/65 Lucerne, Belmore</label><value>1/65 Lucerne, Belmore</value></record>
<record><id>9129</id><label>1/7 Allan Avenue, Belmore</label><value>1/7 Allan Avenue, Belmore</value></record>
<record><id>8236</id><label>1/7 Anderson Street, Belmore</label><value>1/7 Anderson Street, Belmore</value></record>
<record><id>1836</id><label>10/33 Paxton, Belmore</label><value>10/33 Paxton, Belmore</value></record>
</records>

Ответы [ 3 ]

0 голосов
/ 02 ноября 2011

Я не уверен, что это «ОТВЕТ». Если я поступил неправильно, пожалуйста, дайте мне знать.

Я решил обойти проблему, используя опцию «focus» и назначив ей функцию для установки значения в фоновом режиме (через веб-сервис).

Это настоящий взлом, но он работает.

focus: function(event, ui) { 
  jQuery.ajax({ 
    type: "POST",  
    url: "set-value.snips", 
    data: "name="+ui.item.value+"aannddvvaalluuee="+ui.item.id+"aannddsseessssiioonn=FieldIDName",
  });
},
  • Данные выглядят именно так, потому что по пути у меня возникли проблемы с "&", которые не были совместимы с XML, а затем БОЛЬШЕ проблем с "& amp;" если ты можешь в это поверить. Поэтому в веб-сервисе я разбираю переданное значение «имя» на три значения. Работает хорошо.
0 голосов
/ 25 июня 2015

Проверьте, используете ли вы jquery validate. Если да, проверьте версию. Используете ли вы один из https://github.com/jzaefferer/jquery-validation, тогда знайте, что он (наверняка v1.6) может вызвать проблемы с щелчками мыши в раскрывающемся списке автозаполнения.

Решение: Загрузите скрипт с https://plugins.jquery.com/validate/

См:

  • / stackoverflow.com вопросы / 13379439 / JQuery-щ-автозаполнения-оленью кожа-Allow-варианта, чтобы быть выбрано, с мышиным больше
  • forum.jquery.com / тема / автозаполнения-щелчок для выбора-детал-не-работать-в-1-9-1
0 голосов
/ 01 ноября 2011

Из-за этого minLength: 3 Когда вы используете minLength, это означает, что вы должны ввести хотя бы это количество символов для отображения списка автозаполнения. Попробуйте: minLength: 0

...