Передача текста и переменной из цикла по нажатию 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]); Но как то не нравиться мне этот способ. Не эстетичный он. |
Цитата:
|
а что в нем не так ?...
разве что синтаксические ошибки... ['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] |
Цитата:
Ты хоть бы примеры рабочие делал... |
еще раз повторюсь, это для наглядности....
давайте, я для наглядности скину просто весь код, чтоб Вы поняли, что с массивом все в порядке: 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] выбранного элемента из списка. |
Цитата:
Т.е. это типа объяснение? |
Нет. Это то что необходимо сделать. Задача, которую я не могу решить !
|
Часовой пояс GMT +3, время: 03:19. |