jqGrid - перемещаться по строкам с помощью клавиш со стрелками вверх / вниз? - PullRequest
8 голосов
/ 07 января 2010

Можно ли перемещаться между строками с помощью клавиш со стрелками вверх и вниз?

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

В форумах jqGrid есть сообщение об этом по адресу http://www.trirand.com/blog/?page_id=393/help/navigate-arraw-keys/,, но включение режима редактирования ячеек не является для меня решением, так как это вызовет множество других нежелательных режимов работы сетки.

Ответы [ 4 ]

12 голосов
/ 06 июля 2011

Клавиатурная навигация наконец добавлена ​​в jqGrid начиная с версии 4.0.

Для начала перейдите на демонстрационную страницу и перейдите к Functionality | Keyboard navigation.

Следующий код используется для привязки клавиш со стрелками вверх / вниз:

jQuery("#keynav").jqGrid('bindKeys');

Но, как показывает демонстрация, вы можете передать опции для привязки и других клавиш:

// Bind the navigation and set the onEnter event
jQuery("#keynav").jqGrid('bindKeys', {
       "onEnter" : function( rowid ) { 
                     alert("You enter a row with id:"+rowid)
       }
});

Для получения дополнительной информации см. метод bindKeys в вики документации.

5 голосов
/ 21 апреля 2011

Это будет работать, только если у вас есть одна сетка на экране, потому что она переопределяет клавиши уровня документа вверх / вниз, но это начало.

        $(document).keypress(function(e)
        {
            if(e.keyCode == 38 || e.keyCode == 40)  //up/down arrow override
            {
                var gridArr = $('#GridID').getDataIDs();
                var selrow = $('#GridID').getGridParam("selrow");
                var curr_index = 0;
                for(var i = 0; i < gridArr.length; i++)
                {
                    if(gridArr[i]==selrow)
                        curr_index = i;
                }

                if(e.keyCode == 38) //up
                {
                    if((curr_index-1)>=0)
                        $('#GridID').resetSelection().setSelection(gridArr[curr_index-1],true);
                }
                if(e.keyCode == 40) //down
                {
                    if((curr_index+1)<gridArr.length)
                        $('#GridID').resetSelection().setSelection(gridArr[curr_index+1],true);
                }
            }

        });
5 голосов
/ 07 января 2010
$(document).keypress(function(e) {

if(e.keyCode == 40) { //down arrow
 $('#nextElementId').click();
}
if(e.keyCode == 38 { //up arrow
 $('#previousElementId'.click();
}

});
0 голосов
/ 11 июля 2014

Для этого используйте

jQuery("#myGrid").jqGrid('bindKeys');

Однако, это не будет работать, если к сетке прикреплено .disableSelection(). jquery disable selection останавливает выделение текстового содержимого внутри объекта, поэтому, если это применяется к сетке, пользователь не может выделить текст в сетке и скопировать его в буфер обмена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...