Форум → Программирование → JavaScript → проблема с событиями
проблема с событиями
-
Захотел сделать поиск по сайту динамический
чтобы под строкой поиска появлялся результат как в яндексе !
Вроде бы все хорошо, но столкнулся с проблемой событий
у меня получилось что под строку поиска подставляется див а в него
<p>результат 1</p>
<p>результат 2</p>
<p>результат N</p>
При нажатии стрелок вверх и вниз подсвечивается нужный параграф,
а гемор весь что, на поле поиска вешаю событие keydown чтобы во всех броузерах
определить код н.стрелки и при нажатии результат подсвечивается а когда кнопку отпускаем
событие завершается, и типа все ))
Бля как этого можно избежать
Все это делаю с помощью jquery,
и гребанный ie реагирует только на кейдаун -
Янв. 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. -
Янв. 5, 2011, 7:58 п.п., спустя 6 минут 54 секунды
переходить по элементам вверх вниз не получается
нажимаю вниз первый элемент подсвечивается отпускаю кнопу он перестает подсвечиваться
вот -
Янв. 5, 2011, 8:03 п.п., спустя 5 минут 12 секунд
функция ищет первый <p> с синим бэкграундом
делает бэкграунд белый, и следующий <p> делает синим, таким образом переходим от одного к другому
при нажати вниз бэкграунд менятся, при отпускании клавишии он менят цвет, а вот этого как раз таки и не надо,
нужно стоб цвет оставался -
Янв. 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. -
Янв. 5, 2011, 8:09 п.п., спустя 1 минуту 49 секунд
1. код в студию?
2. вам принципиально самому написать или может лучше плагин готовый использовать?https://smappi.org/ - платформа по созданию API на все случаи жизни -
Янв. 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 сек.хотя можно и плагин разобрать -
Янв. 5, 2011, 9:37 п.п., спустя 22 минуты 45 секунд
погуглите jquery autocompletehttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Янв. 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. -
Янв. 5, 2011, 9:43 п.п., спустя 3 минуты 6 секунд
самому интересней )
тогда код нормально оформите, а не это говнокашаСпустя 19 сек.
да, жжет
у меня один знакомый нагуглил, у него автокомплит работает так: сначала загружается скрипт, в котором выводятся обсолютно все записи из бд, а уже потом при помощи яваскрипта парситься результатhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Янв. 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 сек.да с выводом результата проблем нету, все выводиться при наведении мыши цвет бэкграунда меняеться, при щелчке
результат вставляется в поле поиска и все вобщем гут
а вот стрелками гулять по результатам вверх-вниз не получается -
Янв. 5, 2011, 10:55 п.п., спустя 11 минут 2 секунды
autocomplete с селектами работает, впринципе можно и переделать
но все же интересно
я так понимаю при нажатии на клавишу происходит событие, что то меняется а после того как клавишу отпустили
все куда то девается) а пачему? а как чтоб не девалось? -
Янв. 6, 2011, 1:30 д.п., спустя 2 часа 35 минут
та ебанный ты в рот - http://jqueryui.com/demos/autocomplete/ -
Пожалуйста, авторизуйтесь, чтобы написать комментарий!