我使用jqGrid进行内联编辑,也使用Add按钮创建新记录.
为简单起见,我说有2个字段
Field1 Field2
Run Code Online (Sandbox Code Playgroud)
我需要以下规则
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}},
...
]
...
});
Run Code Online (Sandbox Code Playgroud)
你应该不要忘了复位field1和field2变量undefined之前或编辑(在后的值oneditfunc,aftersavefunc或一些其他的回调).
我在上面的代码中使用了"对称"版本field1和field2验证,以便在字段更改顺序的情况下使代码工作,这在使用columnChooser时很重要.在这种情况下,您无法确定field1在此之前是否始终有效field2.
您可以通过使用现有jqGrid方法的"子类化"来存档一些其他效果.见答案作为一个例子.
更新:该演示演示了上述验证的更详细的想法.