0

当用户在编辑模式下按 ENTER 时,我需要进行捕获,并且每次按下任何其他键但不按 ENTER 时,此代码都会起作用。

任何想法为什么?也许有一个需要设置为false的自动设置?

 $(dispgrid).jqGrid({
            url: als.common.getServerPath() + 'WorkorderAjax/GetDispositionFields',
            datatype: 'local',
            mtype: 'POST',
            height: 292,
            width: 480,
            caption: 'Disposition Instructions',
            hidegrid: false,
            loadtext: 'Please wait,</br>loading disposition fields...',
            colModel: [
                { name: 'Description', label: 'Description', sortable: false, width: 120, align: 'left' },
                { name: 'Fraction', label: 'Split', sortable: false, width: 40, align: 'center' },
                {
                    name: 'Disposition', label: 'Disposition', sortable: false, align: 'left',
                    editable: true, edittype: 'select', classes: 'disposition_list'
                },
                { name: 'PickList', label: 'PickList', sortable: false, hidden: true },
                {
                    name: 'FreeDays', label: 'FreeDays', sortable: false,  editable: true 
                },
                { name: 'MaxFreeDays', label: 'MaxFreeDays',hidden: true }
            ],
            pgbuttons: false,
            pginput: false,
            rowNum: 999,                    
            loadComplete: function () {
                currentRowId = undefined;
                prevRowId = undefined;
                prevRowModified = false;
            },
            onSelectRow: function (rowId) {
                if (prevRowId !== undefined) {
                    if (prevRowModified) {

                        //validate free days here                    
                        var selRowId = $(dispgrid).jqGrid('getGridParam', 'selrow');
                        var freedays = $("#" + prevRowId + "_FreeDays", dispgrid).val();
                        var maxfreedays  = $(dispgrid).jqGrid('getCell', selRowId, 'MaxFreeDays');

                        if (parseInt(freedays) > parseInt(maxfreedays)) {
                            $(dispgrid).jqGrid('restoreRow', selRowId);

                            showErrorDialog("Free days can not be larger than " + maxfreedays);
                            $(dispgrid).resetSelection();
                            $(dispgrid).setSelection(prevRowId, false);
                            return true;
                        }

                        saveparameters = {
                            url: als.common.getServerPath() + 'WorkorderAjax/UpdateDispositionFields',
                            extraparam: {
                                folderno: wo,
                                fraction: prevRowId,
                                disposition: $('#' + prevRowId + '_Disposition', this).val(),
                                freedays: $('#' + prevRowId + '_FreeDays', this).val()
                            },
                            successfunc: function () {
                                $(this).trigger("reloadGrid");
                                prevRowModified = false;
                                $(this).restoreRow(prevRowId);
                                return true;
                            }
                        };

                        $(this).jqGrid('saveRow', prevRowId, saveparameters);
                    }
                    else {
                        $(this).restoreRow(prevRowId);
                    }
                }

                currentRowId = rowId;

                var rowData = $(this).jqGrid('getRowData', currentRowId);
                var unformatted = rowData.PickList;
                var formatted = '';
                var ar = unformatted.split(',');
                for (var i = 0; i < ar.length; i++) {
                    formatted += ar[i] + ':' + ar[i]
                    + (i < ar.length - 1 ? ';' : '');
                }
                $(this).setColProp('Disposition', { editoptions: { value: formatted } });

                saveparameters = {
                    url: als.common.getServerPath() + 'WorkorderAjax/UpdateDispositionFields',
                    extraparam: {
                        folderno: wo,
                        fraction: currentRowId,
                        disposition: $('#' + currentRowId + '_Disposition', this).val()
                    },
                    successfunc: function () {
                        $(this).trigger("reloadGrid");
                        prevRowModified = false;
                        return true;
                    },
                    keys: true
                };

                $(this).editRow(currentRowId, saveparameters);
                prevRowId = currentRowId;
            }
        }).closest('div.ui-jqgrid-view').children('div.ui-jqgrid-titlebar').css('text-align', 'center').
           children('span.ui-jqgrid-title').css('float', 'none');

        $(dispgrid).on('change', '', function () { prevRowModified = true; });

        $(dispgrid).on('keydown', '', function (e) {     
           //the  break point here gets hit every time unless the user presses ENTER key
          if (e.keyCode == 13) {                
          }
        });
4

1 回答 1

0

keys:falsesaveparameters成功了

于 2016-06-23T19:32:30.607 回答