【发布时间】:2014-12-30 11:13:08
【问题描述】:
如果我要添加新行并启用自动编辑新添加的行,那么我想通过 ENTER 按钮执行验证并保存行,但我不想通过 ESC 按钮恢复行。因为我在所有字段中设置了required: true,并且如果新添加的行至少有一个字段为空,那么 ESC 按钮 (restoreRow) 会导致我的数据不一致,因为不会执行验证并且新添加的行将是有空字段。虽然我设置了required: true.
问题是添加新行后我总是想在保存之前验证编辑的行,但是 ESC 按钮会导致 restoreRow。 对于 doubliClick 的正常编辑原因,我想使用 ESC 来恢复行并使用 ENTER 来保存行。
我的代码是从咖啡脚本生成的
$("#add-row").click((function(_this) {
return function(e) {
e.preventDefault();
return _this.saveEditingRow(function() {
var dataIds;
_this.table.jqGrid("addRowData", void 0, "last");
dataIds = _this.table.jqGrid("getDataIDs");
if (dataIds.length > 0) {
return _this.table.jqGrid("editRow", dataIds[dataIds.length - 1], {
keys: true,
url: "clientArray",
aftersavefunc: function(rowId) {
return retypeColumnValues.call(table, rowId);
}
});
}
});
};
})(this));
Table.prototype.saveEditingRow = function(successfunc, errorfunc) {
var i, result, savedRows, success, _i, _ref;
savedRows = this.table.jqGrid("getGridParam", "savedRow");
success = true;
for (i = _i = 0, _ref = savedRows.length; _i < _ref; i = _i += 1) {
if (savedRows.length > 0) {
result = this.table.jqGrid("saveRow", savedRows[i].id, {
url: "clientArray"
});
if (!result && success) {
success = false;
}
}
}
if (success) {
return typeof successfunc === "function" ? successfunc() : void 0;
} else {
return typeof errorfunc === "function" ? errorfunc() : void 0;
}
};
如果有必要,我会把所有代码都填在coffeescript中。
【问题讨论】:
标签: jqgrid