Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ui autocomplete (https://javascript.ru/forum/jquery/52996-ui-autocomplete.html)

lok105 16.01.2015 13:58

ui autocomplete
 
Добрый день, форумчане! Снова за помощью. Может найдется у кого минутка. Предполагаю, что ситуация пустяковая, но моего скудного разума не хватает. Итак...

Есть поля input

<table id="tableTraffic">
             <tr>
                 <td><input class='pole' type='text' name='Come'/></td>
             </tr>
             <tr>
                 <td><input class='pole' type='text' name='Come'/></td>
             </tr>
</table>



Есть скрипт.
sours приходится делать через функцию, т.к. для разных пользователей должен быть выбор из разных массивов.
И всю голову сломал себе как должна выглядеть возвратная функция
success. Что бы автокомплит заработал. Через фаербаг смотрю ответ json приходит, а вот как функцию вывода написать не догоняю. Помогите, а??? :)

$(function(){
    
    var user = $('#userName').html();
   
  $('.pole').autocomplete({
        source: function(request, response){
            $.ajax({
                url: 'data.php',
                dataType: 'json',
                type: "GET",
                data: {term: $('.pole').val(), user: user},
               
               success: //????

            }) // конец ajax
               

       }, // конец source
        
       minLength: 2,

  });// конец автокомплит

});


Есть data.php файл, в котором создается массив

<?php

$user = $_GET['user'];

// Тут бла бла бла - сама функция в результате которой создается массив например

$items = array("Вилигельмо 2", "Вилигельмо 3", "Винипух", "Вино", "Крак", "Курица");

        $term = trim($_GET['term']);
		
		 //Шаблон рег. выражения
		$pattern = '/^'.preg_quote($term).'/iu';
		
if(!empty($user)){
    echo json_encode(preg_grep($pattern, $items));
}
?>



Спасибо!

kyt 16.01.2015 14:27

У меня так:
$.ajax({
							type: "GET",
							url: "edit.php",
							data: 'id='+t,
							success: function(json){
...
var arr_arr=json;
								$(function() {
									$( "#company" ).autocomplete({
										source: arr_arr[0]
										});
									});
									$(function() {
									//alert (arr_arr[2]);
									$( "#position" ).autocomplete({
										source: arr_arr[1]
										});
									});
...

Не могу посмотреть Ваш пример, но у меня, вроде, работает. Возможно, можно сделать лучше, я не сильно опытен.

рони 16.01.2015 14:27

lok105,
function(data) {
        response($.map(data, function(item) {
          return {
            label: item,
            value: item
          }
        }));
      }

рони 16.01.2015 14:31

lok105,
term: $('.pole').val() ??? может term: this.value

lok105 16.01.2015 16:47

Рони, спасибо! я понимал, что простое что-то должно быть. Работает!!! )))
Kyt, так же спс!!

Рони, если ставлю term: this.value вместо term: $('.pole').val()
то term не передается и возвращает весь массив значений или пустой если в php указать if(!empty($_GET['term'])

рони 16.01.2015 17:53

lok105,
если полей несколько то $('.pole').val() значение только первого поля

lok105 16.01.2015 18:06

Да, с этим сейчас и разбираюсь, но term: this.value не отсылает GET['term'] не знаю почему

рони 16.01.2015 18:42

lok105,
назначайте autocomplete через цикл
$(function() {
    var user = $("#userName").html();
    $(".pole").each(function(indx, el) {
        $(el).autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "data.php",
                    dataType: "json",
                    type: "GET",
                    data: {
                        term: el.value,
                        user: user
                    },
                    success: function(data) {
                        response($.map(data, function(item) {
                            return {
                                label: item,
                                value: item
                            }
                        }))
                    }
                })
            },
            minLength: 2
        })
    })
});

lok105 16.01.2015 19:14

Рони, супер! спасибо еще раз! работает!


Часовой пояс GMT +3, время: 15:29.