Как мне игнорировать keyEvent в Javascript? - PullRequest
2 голосов
/ 28 декабря 2010

У меня есть DataTable в YUI. Я пытаюсь заставить таблицу игнорировать все ключевые события. Я пробовал эти методы:

YAHOO.util.Event.addListener(singleSelectDataTable, "keydown", function(oEvent) {
    YAHOO.util.Event.stopPropagation(oEvent); 
});

OR

YAHOO.util.Event.preventDefault(singleSelectDataTable.tableKeyEvent);    

OR

singleSelectDataTable.subscribe('tableKeyEvent', function(oArgs) { 
  YAHOO.util.Event.preventDefault(oArgs.event); 
});

Я рассмотрел несколько примеров YUI для перехвата событий щелчка, но они не аналогичны этому конкретному сценарию. Я создал отдельный тестовый файл HTML, если это поможет: http://pastebin.com/khfR4Stk. Основная проблема заключается в том, что мы не хотим поддерживать клавиши со стрелками вверх или со стрелками вниз в наших таблицах; это таблица прокрутки, и чтобы она работала должным образом, нам нужно настроить большой палец прокрутки, как только выделение пройдет мимо «показанного окна».

Единственное другое решение, о котором я мог подумать, - это подписаться на tableKeyEvent, а затем, если нажатие клавиши является стрелкой вверх, затем отменить выбор новой выбранной строки, выбрать предыдущую строку и сделать соответствующий аналог для стрелки вниз отмена того, что только что сделал нажатием клавиши). Это не похоже на правильное решение ...

Ответы [ 3 ]

0 голосов
/ 06 января 2011

Попробуйте создать эквивалент этого клика

function noenter(evt)
{
    var k = evt.keyCode||evt.which;
    return k != 13;
}

Получите синтаксис для getCharCode и сообщите сценарию, что, когда он получает входные данные, он должен его отрицать.

0 голосов
/ 06 января 2011

не могли бы вы просто добавить обработчик событий, который возвращает false к событию keydown?

0 голосов
/ 05 января 2011

TableKeyEvent повышается после была обработана клавиша со стрелкой вверх / вниз.Поэтому попытка остановить это событие не поможет.

Глядя на функцию _onTbodyKeydown виджета DataTable, я заметил, что установка режима выбора в недопустимый режим отключает навигацию по клавишам со стрелками.К счастью, это не нарушает другую обработку выбора.По крайней мере, в вашем примере.

Так что просто измените selectionMode:"single" на selectionMode: "", и у вас все будет хорошо :-) ( Конечно, нет гарантии, что это будет работать в будущих версиях )

...