JQuery autocomplete передача переменной

Тема в разделе "JavaScript", создана пользователем setevoi, 19 фев 2014.

Модераторы: ZiX
  1. setevoi

    setevoi Создатель

    Регистр.:
    10 апр 2013
    Сообщения:
    44
    Симпатии:
    14
    jquery autocomplete передача переменной для автозаполнения полей не могу разобраться как правильно это сделать. нужно передать id чтобы выполнить автоподбор

    HTML:
    <input class="mete" id="39" name="chars[39]" value="" type="text">
    <input class="mete" id="40" name="chars[40]" value="" type="text">
    <input class="mete" id="41" name="chars[41]" value="" type="text">
    ...
    

    PHP:
    $(function() {
      $(
    ".mete").autocomplete("search.php")  
    });
    пробую так, но не работает

    PHP:
    $(".mete").each(function () {
         var 
    $that = $(this);
         
    $that.autocomplete({source"search.php?id=" $that.attr('id')});
    });
    работает только если в явном виде передать переменную
    Код:
    $(".mete").autocomplete("search.php?id=39")
     
    Последнее редактирование модератором: 19 фев 2014
  2. JJTR

    JJTR Создатель

    Регистр.:
    11 фев 2014
    Сообщения:
    37
    Симпатии:
    26
    Вы можете сначала попробовать отладить, чтобы убедиться, URL 100% правильно, таким образом:

    PHP:
    $(".mete").each(function () {
         var 
    $that = $(this);
         var 
    uri "search.php?id=" $that.attr('id');
         
    alert(uri);
         
    //$that.autocomplete({source: uri});
    });
    Если URI прав, чем вы можете делать вещи таким образом:

    PHP:
    $(".mete").each(function () {
         var 
    $that = $(this);
         var 
    uri "search.php?id=" $that.attr('id');
         
    $that.autocomplete(uri);
         
    // Если вам нужно больше вариантов сделать:
         
    $that.autocomplete("option""minLength"10);
         
    $that.autocomplete("option""disabled"true);
    });
     
    setevoi нравится это.
  3. setevoi

    setevoi Создатель

    Регистр.:
    10 апр 2013
    Сообщения:
    44
    Симпатии:
    14
    Спасибо. Правда уже решил задачу несколько подругому

    Код:
    $(document).ready(function(){
    
    function ac(id) {
        $('#' + id + '').autocomplete("search.php?a=" + id + '', {       
            minChars:0,       
            autoFill:true
          });   
    
       
    }
    
    $(".mete").click(function () {
      var id = $(this).attr("id"); 
      ac(id);
    });
    
    });
    Теперь думаю размышляю, как добавить еще одну функцию, которая по клику выводила бы весь список элементов.
    как я понял надо использовать метод search

    HTML:
    <input class="mete" id="39" name="chars[39]" value="" type="text">
    <a href="#" class="meteall" id="39" >все варианты</a>

    Код:
    .autocomplete("search", "");
     
    Последнее редактирование модератором: 20 фев 2014
  4. JJTR

    JJTR Создатель

    Регистр.:
    11 фев 2014
    Сообщения:
    37
    Симпатии:
    26
    Везде вместо id="23" лучше, чтобы сделать его data-id="23" - действительно для HTML5. И чем попробуйте следующее:

    PHP:
    $('a.meteall').on({
        
    click: function () {
            $(
    'input[data-id="' + $(this).attr('data-id') + '"]').autocomplete("search.php");
        }
    });
    На стороне сервера - в "search.php" вы должны проверить $_GET['id'] - если она не действительна, то вы должны вернуться все варианты.
     
  5. setevoi

    setevoi Создатель

    Регистр.:
    10 апр 2013
    Сообщения:
    44
    Симпатии:
    14
    Вами не правильно понят вопрос. на стороне сервера всегда возвращаются все варианты для данного id
    при отсутствие значения сервер не возвращает значений.
    в противном случаи, это было бы несколько 1 тыс строк :D

    еще раз про задачу.
    при клике на ссылку надо вывести все значения для данного id
     
  6. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Обратись на сервер с помощью аякса, сделай выборку в базе данных по id, верни значения, сформируй список. Или я что-то не так понял)
     
  7. setevoi

    setevoi Создатель

    Регистр.:
    10 апр 2013
    Сообщения:
    44
    Симпатии:
    14
    ну почти так. только это надо сделать средствами http://api.jqueryui.com/autocomplete/
     
  8. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    То есть значения для такого-то id ты с сервера уже получил и автокомплит создал? И тебе надо просто показать все результаты? тогда должен работать
    Код:
    .autocomplete("search", "");
    
    вот смотри в этом примере он работает http://jsfiddle.net/eNZ86/44/
     
    setevoi нравится это.
  9. setevoi

    setevoi Создатель

    Регистр.:
    10 апр 2013
    Сообщения:
    44
    Симпатии:
    14
    Да практически оно.
    осталось придумать как "search.php?a=" + id + '' приладить :)
     
  10. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Это бесмысленно. У тебя всего один автокомлплит на странице, он не создается каждый раз новый(при щелчке по полю), а уничтожается и потом уже создается.
    Можно в обработчике клика .meteall создававать каждый раз заново автокомплит для текущего поля, как будто ты щелкнул по полю(.mete). После этого выполняй поиск search и все)