2

インライン編集jqgridでonSelectRowの特定のセルにフォーカスを設定するには?

私は答えを試しました:
1.クリックしたセルにフォーカスを移動するにはjqGridインライン編集が必要です2.jqgridでインライン編集を開始するためにクリックされたセルにフォーカスを設定する方法3.jqGrid
選択したセルを編集する 方法 4.設定jqgrid の選択行の編集可能な入力フィールドへのフォーカス


しかし、どれもうまくいきません!

したがって、ユーザーがクリックしたセルを見つける必要はありませんが、カーソルが各行の「lg_description」列に正確にある必要があります。問題は e パラメータにあると思います。「lg_description」列に設定すると、e パラメータの代わりに「lg_description」をどこかに添付するだけでよいと思います。

編集:
これは私のコードです:

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つの異なる試行を試みました.5番目の試行はその上のコードの代わりです

4

1 に答える 1

3

インライン編集の場合、入力フィールドを作成する を呼び出す前に、フォーカスを設定しようと何度も試みます。editRowさらに、なぜあなたが使おうとするのか不思議です

$("#lg_description").focus();

id="lg_description"フォーカスを設定します。編集行のROWIDは"lg"? 列名は"description"? 参照した回答のデモでは、クリックしたセル (の子)またはにフォーカスを設定します。常に特定の列にフォーカスを設定したい場合は、使用する必要があります<input><select>e.target

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

id には通常、セレクターでエスケープする必要があるメタ文字が含まれる可能性があるため、$.jgrid.jqID(id)代わりに を使用する方が安全です。id詳細については、 jQuery のドキュメントを参照してください。

于 2013-09-05T09:54:11.880 に答える