javascript код, который будет перехватывать нажатие клавиш клавиатуры 38 и 40!!!
Есть таблица выводимая php функцией-поиска. При нажатиях на клавиатуре клавиш "ВВЕРХ" и "ВНИЗ" курсор должен бегать по строкам таблицы меняя из класс. Курсор должен представлять собой полупрозрачную картинку или стрелочку в диве... класс при наведении курсора даю через onmouseover, а как написать ф-цию для клавиатуры не знаю. Помогите пожалуйста!:thanks:
|
Событие keydown (может быть keypress или keyup), свойство keyCode объекта события !!!
|
это я тоже понимаю, а вот как сделать так чтобы при нажатии оно перескакивало вверх или в них, как оно будет определять строку что сверху или та что снизу и менять их класс соответственно тащить курсор?
|
переставлять класс active срокам через http://api.jquery.com/next/ http://api.jquery.com/prev/ например
|
animhotep,
а в другую строку (tr) как на жиквери перебрасывать будешь? Nuitari, пригодиться: http://webew.ru/articles/598.webew |
Цитата:
$(".active").parent('tr').next().addClass(".active "); |
animhotep,
а сорри, все верно, я невнимательно прочитал :) , думал надо по ячейкам таблицы перемещаться. |
Вариант на jquery-ui selectable
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>selectable demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js">
</script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js">
</script>
<style>
#selectable .ui-selecting { background: #FECA40; }
#selectable .ui-selected { background: #F39814; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable tr { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
#selectable tbody tr:hover { cursor: pointer; background-color: #FFB861;}
</style>
<script>
$(function() {
$( "#selectable tbody" ).selectable();
$(document).keyup(function(e) {
var lastSelected = $(".ui-selected");
lastSelected.removeClass("ui-selected");
var Selected;
if(e.which == 40) {
Selected = lastSelected.next().size()? lastSelected.next(): lastSelected.prevAll(":last");
Selected.addClass("ui-selected");
}
if(e.which == 38) {
Selected = lastSelected.prev().size() ? lastSelected.prev(): lastSelected.nextAll(":last");
Selected.addClass("ui-selected");
}
})
});
</script>
</head>
<body>
<table align="center" class="table1" id="selectable">
<thead>
<tr>
<th>col1</th>
<th>col2</th>
</tr>
</thead>
<tbody>
<tr>
<td>test</td>
<td>test</td>
</tr>
<tr>
<td>test</td>
<td>test</td>
</tr>
<tr>
<td>test</td>
<td>test</td>
</tr>
</tbody>
</table>
</body>
</html>
|
я вставил ваш код и пробыва тестить но при нажатии кнопок 38, 40 ничего не происходит подскажите в чем у меня может быть проблема?
|
рони, у deff'а научился называть переменные с большой буквы? Это же не конструктор.
|
Nuitari,
в примере неотключен скролинг страницы по кнопкам и для начала работы необходимо любую строку выбрать. http://learn.javascript.ru/play/ML9Doc |
danik.js,
лучше подскажи как сделать код рабочим, ато пока танцы с бубнами получились с keyup - если конечно интересно. 1. неотключен скролинг 2. по клику на таблицу сделать keyup сразу рабочим. |
Выделение строк таблицы по клику и/или кнопками вверх вниз
:dance: :write:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>selectable demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<style>
body{ height: 1000px }
#selectable .ui-selected { background: #F39814; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable tr { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
#selectable tbody tr:hover { cursor: pointer; background-color: #FFB861;}
</style>
<script>
$(function()
{
var tr = $("#selectable tbody tr");
tr.click(function ()
{
tr.removeClass("ui-selected");
$(this).addClass("ui-selected")
}
)
$(document).on("keypress keydown", function(event) {event.preventDefault();})
$(document).on("keyup", function(event)
{
event.preventDefault();
var selected = $(".ui-selected");
selected.removeClass("ui-selected");
if(event.which == 40) {
selected = selected.next().size()? selected.next():tr.first() ;
}
if(event.which == 38) {
selected = selected.prev().size()? selected.prev():tr.last();
}
selected.addClass("ui-selected");
}
)
}
);
</script>
</head>
<body>
<table align="center" class="table1" id="selectable">
<thead>
<tr>
<th>col1</th>
<th>col2</th>
</tr>
</thead>
<tbody>
<tr>
<td>test</td>
<td>test</td>
</tr>
<tr>
<td>test</td>
<td>test</td>
</tr>
<tr>
<td>test</td>
<td>test</td>
</tr>
</tbody>
</table>
</body>
</html>
|
| Часовой пояс GMT +3, время: 15:43. |