Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   javascript код, который будет перехватывать нажатие клавиш клавиатуры 38 и 40!!! (https://javascript.ru/forum/dom-window/40630-javascript-kod-kotoryjj-budet-perekhvatyvat-nazhatie-klavish-klaviatury-38-i-40-a.html)

Nuitari 13.08.2013 14:15

javascript код, который будет перехватывать нажатие клавиш клавиатуры 38 и 40!!!
 
Есть таблица выводимая php функцией-поиска. При нажатиях на клавиатуре клавиш "ВВЕРХ" и "ВНИЗ" курсор должен бегать по строкам таблицы меняя из класс. Курсор должен представлять собой полупрозрачную картинку или стрелочку в диве... класс при наведении курсора даю через onmouseover, а как написать ф-цию для клавиатуры не знаю. Помогите пожалуйста!:thanks:

danik.js 13.08.2013 14:24

Событие keydown (может быть keypress или keyup), свойство keyCode объекта события !!!

Nuitari 13.08.2013 14:31

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

animhotep 13.08.2013 14:46

переставлять класс active срокам через http://api.jquery.com/next/ http://api.jquery.com/prev/ например

Riim 13.08.2013 15:27

animhotep,
а в другую строку (tr) как на жиквери перебрасывать будешь?

Nuitari,
пригодиться: http://webew.ru/articles/598.webew

animhotep 13.08.2013 16:14

Цитата:

Сообщение от Riim
а в другую строку (tr) как на жиквери перебрасывать будешь?

както так
$(".active").parent('tr').next().addClass(".active ");

Riim 13.08.2013 16:30

animhotep,
а сорри, все верно, я невнимательно прочитал :) , думал надо по ячейкам таблицы перемещаться.

рони 13.08.2013 16:46

Вариант на 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>

Nuitari 13.08.2013 16:57

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

danik.js 13.08.2013 17:21

рони, у deff'а научился называть переменные с большой буквы? Это же не конструктор.

рони 13.08.2013 17:27

Nuitari,
в примере неотключен скролинг страницы по кнопкам и для начала работы необходимо любую строку выбрать.
http://learn.javascript.ru/play/ML9Doc

рони 13.08.2013 17:34

danik.js,
лучше подскажи как сделать код рабочим, ато пока танцы с бубнами получились с keyup - если конечно интересно. 1. неотключен скролинг 2. по клику на таблицу сделать keyup сразу рабочим.

рони 13.08.2013 18:17

Выделение строк таблицы по клику и/или кнопками вверх вниз
 
: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, время: 05:52.