我正在使用 jqGrid 进行内联编辑,以及使用“添加”按钮创建新记录时。
为简单起见,假设我有 2 个字段
Field1 Field2
我需要以下规则
- 如果用户未在 Field1 或 Field2 中输入任何内容,则无需验证
- 如果用户确实输入了数据,他们可以在 Field1 或 Field2 中输入数据,但不能同时输入
我正在使用 jqGrid 进行内联编辑,以及使用“添加”按钮创建新记录时。
为简单起见,假设我有 2 个字段
Field1 Field2
我需要以下规则
jqGrid 的验证可能性有很多限制,尤其是在内联编辑期间的验证。将调用实现验证的方法$.jgrid.checkValues
(参见源代码行),将在读取相应输入字段期间直接调用。因此,作为当前验证,没有关于其他字段的信息。
作为解决方法,您可以在字段验证期间保存来自 Field1 的值。Filed2 的验证可以对这两个字段进行验证。自定义验证是您可以在案例中使用的方式。
var field1, field2,
myCustomCheck = function (value, colname) {
if (colname === "field1") {
field1 = value;
} else if (colname === "field2") {
field2 = value;
}
if (field1 !== undefined && field2 !== undefined) {
// validate the fields here
return [false, "some error text"];
} else {
return [true];
}
};
$("#grid").jqGrid({
...
colModel: [
...
{name: 'field1', editable: true, ...,
editrules: {custom: true, custom_func: myCustomCheck}},
...
{name: 'field2', editable: true, ...,
editrules: {custom: true, custom_func: myCustomCheck}},
...
]
...
});
您不应该忘记在编辑之前或之后将变量field1
和field2
变量重置为值(在或其他回调中)。undefined
oneditfunc
aftersavefunc
我在上面的代码中使用了“对称”版本field1
和field2
验证,以使代码在字段顺序更改的情况下工作,如果您使用columnChooser ,这可能很重要。在这种情况下,您不能确定field1
在field2
.
您可以通过使用现有 jqGrid 方法的“子类化”来归档一些附加效果。以答案为例。
更新:演示更详细地展示了上述验证思想。