javascript – jqGrid:是否可以在Tab键关闭时提交单元格更改而不是按Enter键?

前端之家收集整理的这篇文章主要介绍了javascript – jqGrid:是否可以在Tab键关闭时提交单元格更改而不是按Enter键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的网格中有一个简单的内联编辑,我想在用户中文本框时提交更改. jqGrid的默认行为强制用户按“Enter”提交更改,但这对我们的用户来说是不直观的.

alt text http://i32.tinypic.com/e62iqh.jpg

onSelectRow: function(id) {
         $(gridCoreGroups).editRow(id,true,undefined,function(response) 
         {
              alert("hello world");
         }
    }

我已经完成了所提供的事件,但是这些都是由于用户按下“Enter”而发生的,我想避免这种情况.当用户选中此单元格时,是否有可以连接的内容会触发操作?

解决方法

对于在线编辑,您可以通过以下几种方式完成.要使用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

小心rowIds.当您进行排序,添加删除行时,您可能会发现自己编写了一些棘手的jQuery来将行ID转换为iRows或行号.

如果你像我一样,你进行了单独的单元格编辑,你将需要修改afterEditCell触发器,例如:

$('#gridId').setGridParam({afterEditCell: function(id,name,val,iRow,iCol){
    //Modify event handler to save on blur.
    $("#"+iRow+"_"+name,function(){
      $('#gridId').saveCell(iRow,iCol);
    });
  }});

希望有所帮助..

猜你在找的JavaScript相关文章