ФорумПрограммированиеJavaScript → проблема с событиями

проблема с событиями

  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2011, 7:47 п.п.

    Захотел сделать поиск по сайту динамический
    чтобы под строкой поиска появлялся результат как в яндексе !

    Вроде бы все хорошо, но столкнулся с проблемой событий
    у меня получилось что под строку поиска подставляется див а в него
    <p>результат 1</p>
    <p>результат 2</p>
    <p>результат N</p>

    При нажатии стрелок вверх и вниз подсвечивается нужный параграф,
    а гемор весь что, на поле поиска вешаю событие keydown чтобы во всех броузерах
    определить код н.стрелки и при нажатии результат подсвечивается а когда кнопку отпускаем
    событие завершается, и типа все ))

    Бля как этого можно избежать
    Все это делаю с помощью jquery,
    и гребанный ie реагирует только на кейдаун
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz Янв. 5, 2011, 7:51 п.п., спустя 4 минуты 16 секунд

    и типа все

    не понятно
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2011, 7:58 п.п., спустя 6 минут 54 секунды

    переходить по элементам вверх вниз не получается
    нажимаю вниз первый элемент подсвечивается отпускаю кнопу он перестает подсвечиваться
    вот


  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2011, 8:03 п.п., спустя 5 минут 12 секунд

    функция ищет первый <p> с синим бэкграундом
    делает бэкграунд белый, и следующий <p> делает синим, таким образом переходим от одного к другому

    при нажати вниз бэкграунд менятся, при отпускании клавишии он менят цвет, а вот этого как раз таки и не надо,
    нужно стоб цвет оставался
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz Янв. 5, 2011, 8:07 п.п., спустя 3 минуты 58 секунд

    сектор код на барабане. код в студию!
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Янв. 5, 2011, 8:09 п.п., спустя 1 минуту 49 секунд

    1. код в студию?
    2. вам принципиально самому написать или может лучше плагин готовый использовать?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2011, 9:14 п.п., спустя 1 час 4 минуты 51 секунду

    $('#search').bind('keydown',function(event){

    if ( $('#SearchingResult p').size() == 0)
    {
    return;
    }
    else
    {
    var elems = $('#SearchingResult p').get(),
    id = 0;
    }

    // down
    if (event.keyCode === 40)
    {
    $.each(elems,function(i){
    if ( $(this).css('background-color') == '#def2fc' )
    {
    id = i;
    return false;
    }
    });

    if ( id == 0 )
    {
    $(elems[id]).css('background-color','#def2fc')
    }
    else
    {

    if ( elems[id+1] !== undefined)
    {
    $(elems[id]).css('background-color','#fff')
    $(elems[id+1]).css('background-color','#def2fc')
    }
    }

    }

    // up
    if (event.keyCode == 38)
    {
    $.each(elems,function(i){
    if ( $(this).css('background-color') == '#def2fc' )
    {
    id = i;
    $(elems[id]).css('background-color','#fff')
    return false;
    }
    });


    if ( $(elems[id-1]) !== undefined )
    {
    $(elems[id-1]).css('background-color','#def2fc')
    }

    }
    });
    Спустя 43 сек.
    самому интересней )
    Спустя 16 сек.
    хотя можно и плагин разобрать
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Янв. 5, 2011, 9:37 п.п., спустя 22 минуты 45 секунд

    погуглите jquery autocomplete
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz Янв. 5, 2011, 9:40 п.п., спустя 3 минуты 22 секунды

    у меня один знакомый нагуглил, у него автокомплит работает так: сначала загружается скрипт, в котором выводятся обсолютно все записи из бд, а уже потом при помощи яваскрипта парситься результат
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Янв. 5, 2011, 9:43 п.п., спустя 3 минуты 6 секунд

    самому интересней )

    тогда код нормально оформите, а не это говнокаша
    Спустя 19 сек.

    у меня один знакомый нагуглил, у него автокомплит работает так: сначала загружается скрипт, в котором выводятся обсолютно все записи из бд, а уже потом при помощи яваскрипта парситься результат
    да, жжет
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2011, 10:44 п.п., спустя 1 час 48 секунд

    .bind('keydown',function(event){

    if ( $('#SearchingResult p').size() == 0)
    {
    return;
    }
    else
    {
    var elems = $('#SearchingResult p').get(),
    id = -1;


    }

    // down
    if (event.keyCode == 40)
    {
    $.each(elems,function(i){
    if ( $(this).attr('title') == 'выбрать' )
    {
    $(this).attr('title','');
    id = i;
    return false;
    }
    });

    if ( id == -1 )
    {
    $(elems[0]).css('background-color','#def2fc').attr('title','выбрать')
    }
    else
    {

    if ( elems[id+1] !== undefined)
    {
    $(elems[id]).css('background-color','#fff')
    $(elems[id+1]).css('background-color','#def2fc').attr('title','выбрать')
    }
    }

    }

    // up
    if (event.keyCode == 38)
    {
    $.each(elems,function(i){
    if ( $(this).attr('title') == 'выбрать' )
    {
    id = i;
    $(elems[id]).css('background-color','#fff').attr('title','');
    return false;
    }
    });


    if ( $(elems[id-1]) !== undefined )
    {
    $(elems[id-1]).css('background-color','#def2fc').attr('title','выбрать')
    }

    }
    });


    вот такой вариант
    Спустя 87 сек.
    как бы в опере вниз листает нормально
    а как нажимаешь вверх перещелкивает и пропадает

    в фаерфоксе и в експлорере ни вверх ни вниз
    Спустя 232 сек.
    да с выводом результата проблем нету, все выводиться при наведении мыши цвет бэкграунда меняеться, при щелчке
    результат вставляется в поле поиска и все вобщем гут

    а вот стрелками гулять по результатам вверх-вниз не получается
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 5, 2011, 10:55 п.п., спустя 11 минут 2 секунды

    autocomplete с селектами работает, впринципе можно и переделать
    но все же интересно

    я так понимаю при нажатии на клавишу происходит событие, что то меняется а после того как клавишу отпустили
    все куда то девается) а пачему? а как чтоб не девалось?
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Янв. 6, 2011, 1:30 д.п., спустя 2 часа 35 минут

    та ебанный ты в рот - http://jqueryui.com/demos/autocomplete/
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz Янв. 6, 2011, 1:41 д.п., спустя 11 минут 27 секунд

    спасибо буду ковырять

Пожалуйста, авторизуйтесь, чтобы написать комментарий!