Javascript.RU

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

Передача текста и переменной из цикла по нажатию Enter
Добрый вечер. Не могу победить задачу.

Есть, скажем запись в БД: ее номер и текстовое содержимое. Как передать текст я разобрался... но никак не могу передать номер !!!

list - передаем массив данных [1|text, 17|text1, 23|text2.... 999|textN]

$("#abc").keyup(function(I){      
                       
   $("#text").html("").show();
   for(var i in list){                                                            
   var showInfo = list[i].split('|');
   $('#text').append('<div>'+showInfo[1]+'</div>');                  
   var no = showInfo[0];  -  ВОТ ЭТО ЗНАЧЕНИЕ МНЕ НАДО ПОЛУЧИТЬ
   }, 'html';
     
break;);}
     
$("#abc").keydown(function(I){
    switch(I.keyCode) {            
    case 13: // enter                          
    alert($(this).val()); - вот тут получить переменную no
                                   
    return false;
break;);}






Никак не выходит вывести номер no в alert. Получаю значение showInfo[1].
Пробовал еще несколько других способов - они тоже не рабочие.
Единственный рабочий вариант был передавать:
$('#text').append('<div>'+showInfo[1]+'|<font style="font-size:1px;">'+showInfo[0]+'</font></div>');


А далее получать ее как то так:
var no = $(this).val().split('|');
alert(no[1]);


Но как то не нравиться мне этот способ. Не эстетичный он.
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2014, 13:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Pirat
передаем массив данных [1|text, 17|text1, 23|text2.... 999|textN]
Какое-то странное у тебя понятие о массивах...
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2014, 13:49
Новичок на форуме
Отправить личное сообщение для Pirat Посмотреть профиль Найти все сообщения от Pirat
 
Регистрация: 14.04.2014
Сообщений: 4

а что в нем не так ?...

разве что синтаксические ошибки...

['1|text', '17|text1', '23|text2', ...., '999|textN']

вполне данные получаю

далее их разбиваю: var showInfo = list[i].split('|');

и получаю:
showInfo[0] = 1; showInfo[1] = text; // i = 1
showInfo[0] = 17; showInfo[text1] = text; // i = 2
.........
showInfo[0] = 999; showInfo[1] = textN; // i = n

я просто набросок кода кинул.... с описанием интересующей меня проблемы. Данные получаю - вопросов нету.... просто хочу, чтоб пользователь видел $('#text').append('<div>'+showInfo[1]+'</div>');
а переменная на выполнение передавалась showInfo[0]
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2014, 14:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Pirat
['1|text', '17|text1', '23|text2', ...., '999|textN']
И что хочешь взять из этого массива?

Ты хоть бы примеры рабочие делал...
Ответить с цитированием
  #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.
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2014, 22:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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

Т.е. это типа объяснение?
Ответить с цитированием
  #7 (permalink)  
Старый 14.04.2014, 23:00
Новичок на форуме
Отправить личное сообщение для Pirat Посмотреть профиль Найти все сообщения от Pirat
 
Регистрация: 14.04.2014
Сообщений: 4

Нет. Это то что необходимо сделать. Задача, которую я не могу решить !
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача переменной в функцию jankovsky Общие вопросы Javascript 4 26.08.2013 18:58
Отмена события по нажатию на Enter Valentinka_1 jQuery 12 01.08.2013 02:30
Как взятые данные с цикла присоединить к одной переменной ? saturn Элементы интерфейса 2 25.11.2011 13:01
Передача переменной между ifarame-ами DeUre Javascript под браузер 0 10.06.2010 08:29
Отмена submit по нажатию Enter Bratok Events/DOM/Window 1 28.04.2009 05:11