インライン編集では、これをいくつかの方法で実行できます。onSelectRow トリガーを使用して onblur イベントを入力フィールドにバインドし、編集ボタンと保存ボタンを不要にするには、次のようにします。
$('#gridId').setGridParam({onSelectRow: function(id){
//Edit row on select
$('#gridid').editRow(id, true);
//Modify event handler to save on blur.
var fieldName = "Name of the field which will trigger save on blur.";
//Note, this solution only makes sense when applied to the last field in a row.
$("input[id^='"+id+"_"+fieldName+"']","#gridId").bind('blur',function(){
$('#gridId').saveRow(id);
});
}});
行内に表示される可能性のあるすべての入力に jQuery ライブ イベント ハンドラーを適用するには (jqGrid はすべての入力に rowId_fieldName というラベルを付けます)、グリッド内の行数をループしてスローし、次のようにします。
var ids = $("#gridId").jqGrid('getDataIDs');
for(var i=0; i < ids.length; i++){
fieldName = "field_which_will_trigger_on_blur";
$("input[id^='"+ids[i]+"_"+fieldName+"']","#gridId").live('blur',function(){
$('#gridId').jqGrid('saveRow',ids[i]);
});
}
注:上記のように .live() でぼかしを使用するには、jQuery 1.4 または次の場所にあるパッチが必要です:
Simulating "focus" and "blur" in jQuery .live() method
rowId には注意してください。行の並べ替え、追加、および削除を行うと、行 ID を iRow または行番号に変換するためのトリッキーな jQuery を作成していることに気付く場合があります。
あなたが私のようで、個々のセルを編集した場合は、 afterEditCell トリガーを次のように変更する必要があります。
$('#gridId').setGridParam({afterEditCell: function(id,name,val,iRow,iCol){
//Modify event handler to save on blur.
$("#"+iRow+"_"+name,"#gridId").bind('blur',function(){
$('#gridId').saveCell(iRow,iCol);
});
}});
それが役立つことを願っています..