如何在内联编辑jqgrid中的onSelectRow上设置焦点于特定单元格

时间:2013-09-05 02:25:01

标签: jquery jqgrid focus

如何在内联编辑jqgrid中设置onSelectRow中特定单元格的焦点?

我尝试过以下答案:
1. Need jqGrid inline editing to have focus go to clicked cell
2. How to set focus to cell which was clicked to start inline edit in jqgrid
3. How to edit the selected cell on jqGrid
4. Set the focus to the editable input field on select row in jqgrid

但这些都不起作用!

所以现在我不需要找到用户点击的单元格,但是我需要将光标准确地放在每行的“lg_description”列中。我猜这个问题与e参数有关,我认为当我将它设置为“lg_description”列时,我只需要在某处附加“lg_description”而不是e参数。

编辑:
这是我的代码:

onSelectRow: function(id, status, e){
    var grid = $(this); 
    if(id && id!==lastSel){               
        grid.restoreRow(lastSel);   
        lastSel=id;

        //cursor focus

        //first attemp: $("#lg_description").focus();
        //second attemp: $("input, select",e.target).focus();
        //third attemp: document.getElementById("lg_description").focus();
        //fourth attemp:
        /*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);*/
    }
    grid.editRow(id, true,"","","","",aftersavefunc);  
    //fifth attemp: grid.editRow(id, true,function() {$("#lg_description").focus();},"","","",aftersavefunc);
 },

我尝试了5种不同的尝试,其中第五种尝试替代了它上面的代码

1 个答案:

答案 0 :(得分:3)

您尝试在调用editRow之前设置焦点,在内联编辑时创建输入字段。此外,你尝试使用

的原因很奇怪
$("#lg_description").focus();

使用id="lg_description"设置焦点。是编辑行"lg"的rowid?列名是"description"吗?您引用的The demo the answer设置的重点位于点击的单元格中的<input><select>e.target的子项)。如果要始终将焦点设置在特定列上,则应使用

$("#" + $.jgrid.jqID(id) + "_lg_description").focus();
// where "lg_description" is the column name

使用$.jgrid.jqID(id)代替id更安全,因为id可能包含必须在选择器中转义的元字符。有关详细信息,请参阅jQuery documentation