Нужно встроенное редактирование jqGrid, чтобы фокус переместился на нажатую ячейку - PullRequest
0 голосов
/ 06 февраля 2012

Другие задали этот вопрос, но я не нашел хороших ответов.

С помощью jqgrid и встроенного редактирования возможно ли получить фокус на ячейке, которая была выбрана вместо первой ячейки в строке?В обработчике onCellSelect я могу перемещать фокус, но затем он сразу возвращается к первой ячейке в строке.

Firebug постоянно вылетает, когда я выхожу из обратного вызова onCellSelect, поэтому я не сделалбольшой прогресс в самом источнике jqGrid.

Ответы [ 3 ]

1 голос
/ 11 октября 2012

Я использую этот код (jqGrid 4.4.1)

 onSelectRow: function (rowid, status, e) {
   var setFocusToCell = function(e) {
     if(!e || !e.target) return;
     var $td = $(e.target).closest("td"), $tr = $td.closest("tr.jqgrow"), ci, ri, rows = this.rows;
     if ($td.length === 0 || $tr.length === 0 || !rows) return;
     ci = $.jgrid.getCellIndex($td[0]);
     ri = $tr[0].rowIndex;
     $(rows[ri].cells[ci]).find("input,select").focus();
   }
   setFocusToCell(e);
}
0 голосов
/ 06 января 2017

Мне как-то удалось это сделать, прикрепив событие dblclick к каждому td таблицы, я знаю, что это не лучший метод, но вы можете оптимизировать его, как вам нравится, вы также можете игнорировать setTimeout, который использовалсятолько для тестирования.

 $("#jqGrid").on("dblclick", "td", function (event) {   
                 //   setTimeout(function () {
                        console.log(this);
                        $(event.target).find("input,select").focus();                     
                  //  }, 0);
                });

Надеюсь, это поможет вам.

0 голосов
/ 06 февраля 2012

Я ответил на закрытый вопрос здесь . Если вы используете двойной щелчок для входа во встроенное редактирование, вы можете напрямую использовать мой предыдущий ответ.

Если вы используете выделение строки (обратный вызов onSelectRow), у вас будет проблема с обнаружением ячейки, по которой щелкают, поскольку текущая версия jqGrid не имеет объекта события в качестве параметра. Последняя версия jqGrid на github уже имеет параметр (см. мое предложение и исправление ), и вы можете сделать то же самое внутри onSelectRow.

Если вам нужно использовать выпущенную версию jqGrid 4.3.1 и вам нужно установить фокус в обратном вызове onSelectRow, вы можете дополнительно использовать обратный вызов beforeSelectRow для кэширования последнего e.target в переменной и использования его внутри onSelectRow.

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