Страница 1 из 1

jqGrid взаимодействие cellEdit() и datepicker

СообщениеДобавлено: 06 апр 2012, 11:25
miniboom
Здравствуйте!

Есть код:

Код: выделить все
                beforeSelectRow: function (rowid, e) {
                    var $this = $(this),
                    $td = $(e.target).closest('td'),
                    $tr = $td.closest('tr'),
                    iRow = $tr[0].rowIndex,
                    iCol = $.jgrid.getCellIndex($td);
                   
                    if (typeof lastRowIndex !== "undefined" && typeof lastColIndex !== "undefined" &&
                        (iRow !== lastRowIndex || iCol !== lastColIndex)) {
                        $this.jqGrid('setGridParam', {cellEdit: true});
                        $this.jqGrid('restoreCell', lastRowIndex, lastColIndex, true);
                        $this.jqGrid('setGridParam', {cellEdit: false});
                        $(this.rows[lastRowIndex].cells[lastColIndex])
                        .removeClass("ui-state-highlight");
                    }
                    return true;
                },
                ondblClickRow: function (rowid, iRow, iCol) {
                    if (wrt)
                    {
                        var $this = $(this);
                       
                        dblcliked_lastsel=rowid;
                       
                        $this.jqGrid('setGridParam', {cellEdit: true});
                        $this.jqGrid('editCell', iRow, iCol, true);
                        $this.jqGrid('setGridParam', {cellEdit: false});
                        lastRowIndex = iRow;
                        lastColIndex = iCol;
                    }
                    else {lastRowIndex = "undefined"; lastColIndex = "undefined";}
                },
                afterEditCell: function (rowid, cellName, cellValue, iRow, iCol) {
                    var cellDOM = this.rows[iRow], oldKeydown,
                        $cellInput = $('input, select, textarea', cellDOM),
                        events = $cellInput.data('events'),
                        $this = $(this);
                       
                    if (events && events.keydown && events.keydown.length) {
                        oldKeydown = events.keydown[0].handler;
                        $cellInput.unbind('keydown', oldKeydown);
                        $cellInput.bind('keydown', function (e) {
                            $this.jqGrid('setGridParam', {cellEdit: true});
                            oldKeydown.call(this, e);
                            $this.jqGrid('setGridParam', {cellEdit: false});
                        });
                    }
                }


Он добавляет возможность в таблице jqGrid редактировать отдельную ячейку и по
кнопке "Enter" сохранять результат. С элементами "input", "select" и "textarea" всё работает,
однако, если привязать к ячейке "Datepicker", то по enter-у происходит только выбор даты - данные не сохраняются.

Может кто подскажет как это исправить?

Re: jqGrid взаимодействие cellEdit() и datepicker

СообщениеДобавлено: 11 апр 2012, 18:11
XelaNimed
Насколько я понимаю используемый Вами код большой, чтоб Вы его здесь приводили. Залейте его на jsfiddle.net, будет наглядней.