当我输入保存时防止对单元格编辑进行两次保存调用

Prevent two save calls on cell edit when I enter for save

在 jqgrid 中两次调用保存单元格 url(一次是在 enter 的情况下,这是 jqgrid 的默认行为)其他是在 focusout 上自定义保存。

我需要防止在输入保存时对单元格编辑调用两次保存。

column.editoptions.dataEvents = [{
  type: 'keyup focusout',
  fn: function(e) {
    var isValidate = ValidateGridEmail($(this).val());
    EmailValidationMessage(isValidate);
    if (e.type == "focusout" && isValidate && globalVar.irow != null && globalVar.icol != null) {
      $("#GridEditConfiguration").saveCell(globalVar.irow, globalVar.icol);

      globalVar.irow = null;
      globalVar.icol = null;
    }
  }
}]

您可以使用一些事件来做到这一点,但我不确定 free-jqGrtid 是否有这些。这是不支持的版本。

在支持的 Guriddo jqGrid 中,您可以使用 beforeSaveCell 来表示开始保存,然后在您的条件下使用它。将 afterSubmitCell 中的信号设置回 false。

像这样:

var savestart = false;   
$("#jqGrid").jqGrid({
    beforeSubmitCell : function( id, name, val, irow,icol) {
        savestart = true;
    },
    afterSubmitCell : function() {
        savestart = false; 
        return [true,""];
    },
    ....
 });

在您的代码中添加这个

if (e.type == "focusout" && isValidate && globalVar.irow != null && globalVar.icol != null && !savestart) {
  $("#GridEditConfiguration").saveCell(globalVar.irow, globalVar.icol);
  ...
}

您应该再次检查这些事件是否在 free-jqGrid 中可用