首页 > 解决方案 > 当我输入保存时,防止在单元格编辑时进行两次保存调用

问题描述

两次调用 jqgrid 中的保存单元格 url(一次是在输入的情况下,这是 jqgrid 的默认行为),另一种是在焦点输出时自定义保存。

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

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;
    }
  }
}]

标签: javascriptjqueryjqgridfree-jqgrid

解决方案


你可以使用一些事件来做到这一点,但我不确定 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 中可用


推荐阅读