Показать сообщение отдельно
  #5 (permalink)  
Старый 14.04.2014, 14:52
Новичок на форуме
Отправить личное сообщение для Pirat Посмотреть профиль Найти все сообщения от Pirat
 
Регистрация: 14.04.2014
Сообщений: 4

еще раз повторюсь, это для наглядности....
давайте, я для наглядности скину просто весь код, чтоб Вы поняли, что с массивом все в порядке:

var suggest_count = 0;
var input_initial_value = '';
var suggest_selected = 0;

var no;
 
$(window).load(function(){
    // читаем ввод с клавиатуры
    $("#search_box").keyup(function(I){
        // определяем какие действия нужно делать при нажатии на клавиатуру
        switch(I.keyCode) {
            // игнорируем нажатия на эти клавишы
            case 13:  // enter
            case 27:  // escape
            case 38:  // стрелка вверх
            case 40:  // стрелка вниз
            break;
 
            default:
                // производим поиск только при вводе более 2х символов
                if($(this).val().length>3){
 
                    input_initial_value = $(this).val();
                    // производим AJAX запрос к /ajax/ajax.php, передаем ему GET query, в который мы помещаем наш запрос
                    $.post("/ajax/ajax.php", { "query":$(this).val() },function(data){
                        //php скрипт возвращает нам строку, ее надо распарсить в массив.
                        // возвращаемые данные: ['1|test','2|test 1','17|test 2','28|test 3']
                        var list = eval("("+data+")");
                        suggest_count = list.length;
                        if(suggest_count > 0){
                            // перед показом слоя подсказки, его обнуляем
                            $("#search_advice_wrapper").html("").show();
                            for(var i in list){
                                if(list[i] != ''){
									
				var showInfo = list[i].split('|');
									
								
									
                                    // добавляем слою позиции
                                    $('#search_advice_wrapper').append('<div class="advice_variant">'+showInfo[1]+'</div>')
				
					//  ВОТ ТУТ НАДО КАК ТО ЗАПИСАТЬ ЗНАЧЕНИЕ showInfo[0]
									
	
								
                                }
                            }
                        }
                    }, 'html');
                }
            break;
        }
    });
 
    //считываем нажатие клавишь, уже после вывода подсказки
    $("#search_box").keydown(function(I){
        switch(I.keyCode) {
            // по нажатию клавишь прячем подсказку
            case 13: // enter				
                $('#search_advice_wrapper').hide();


				alert($(this).val());  // А ТУТ ПОЛУЧИТЬ ЕГО !!!
				
				
				//
                return false;
            break;
            // делаем переход по подсказке стрелочками клавиатуры
            case 38: // стрелка вверх
            case 40: // стрелка вниз
                I.preventDefault();
                if(suggest_count){
                    //делаем выделение пунктов в слое, переход по стрелочкам
                    key_activate( I.keyCode-39 );
                }
            break;	
        }
    });
 
    // делаем обработку клика по подсказке
    $('.advice_variant').live('click',function(){
		// 1. ПЕРЕХОД ПО УРЛ
		alert($(this).val());  // И ТУТ ПОЛУЧИТЬ ЕГО !!!	
       
        // прячем слой подсказки
        $('#search_advice_wrapper').fadeOut(350).html('');
    });
 
    // если кликаем в любом месте сайта, нужно спрятать подсказку
    $('html').click(function(){
        $('#search_advice_wrapper').hide();
    });
    // если кликаем на поле input и есть пункты подсказки, то показываем скрытый слой
    $('#search_box').click(function(event){
        //alert(suggest_count);
        if(suggest_count)
            $('#search_advice_wrapper').show();
        event.stopPropagation();
    });
});
 
function key_activate(n){
    $('#search_advice_wrapper div').eq(suggest_selected-1).removeClass('active');
 
    if(n == 1 && suggest_selected < suggest_count){
        suggest_selected++;
    }else if(n == -1 && suggest_selected > 0){
        suggest_selected--;
    }
 
    if( suggest_selected > 0){
        $('#search_advice_wrapper div').eq(suggest_selected-1).addClass('active');		

        $("#search_box").val( $('#search_advice_wrapper div').eq(suggest_selected-1).text() );		
		
   	} else {
        $("#search_box").val( input_initial_value );
    }
}



Собственно все работает... только я получаю в alert значение showInfo[1], а хочу showInfo[0]. При этом пользователь при выборе видит showInfo[1]. Выбирает его. А в alert уже передается showInfo[0] выбранного элемента из списка.

Последний раз редактировалось Pirat, 14.04.2014 в 15:03.
Ответить с цитированием