Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid-字段的验证_Jqgrid - Fatal编程技术网

jqGrid-字段的验证

jqGrid-字段的验证,jqgrid,Jqgrid,我使用jqGrid进行内联编辑,也使用Add按钮创建新记录 为了简单起见,假设我有两个字段 Field1 Field2 我需要以下规则 如果用户未在字段1或字段2中输入任何内容,则无需验证(如果需要) 如果用户确实输入了数据,他们可以在字段1或字段2中输入,但不能同时在字段1和字段2中输入 jqGrid的验证可能性有很多限制,尤其是内联编辑期间的验证。将调用实现验证的方法$.jgrid.checkValues(请参阅源代码的部分),该方法将在读取相应的输入字段时直接调用。因此,没有关于当

我使用jqGrid进行内联编辑,也使用Add按钮创建新记录

为了简单起见,假设我有两个字段

Field1   Field2
我需要以下规则

  • 如果用户未在字段1或字段2中输入任何内容,则无需验证(如果需要)
  • 如果用户确实输入了数据,他们可以在字段1或字段2中输入,但不能同时在字段1和字段2中输入

jqGrid的验证可能性有很多限制,尤其是内联编辑期间的验证。将调用实现验证的方法
$.jgrid.checkValues
(请参阅源代码的部分),该方法将在读取相应的输入字段时直接调用。因此,没有关于当前验证的其他字段的信息

作为解决方法,您可以在字段验证期间保存字段1中的值。文件D2的验证可以对这两个字段进行验证。这是您在案例中可以使用的方法

var字段1、字段2、,
myCustomCheck=函数(值,colname){
如果(colname==“field1”){
字段1=值;
}else if(colname==“field2”){
字段2=值;
}
如果(字段1!==未定义和字段2!==未定义){
//验证此处的字段
返回[false,“某些错误文本”];
}否则{
返回[真];
}
};
$(“#网格”).jqGrid({
...
colModel:[
... 
{name:'field1',可编辑:true。。。,
编辑规则:{custom:true,custom_func:myCustomCheck},
...
{name:'field2',可编辑:true。。。,
编辑规则:{custom:true,custom_func:myCustomCheck},
...
]
...
});
在编辑之前或之后(在
oneditfunc
aftersavefunc
或其他回调中),不要忘记将
field1
field2
变量重置为
未定义的

在上面的代码中,我使用了
field1
field2
验证的“对称”版本,以使代码在字段顺序发生变化的情况下工作,如果使用,这可能很重要。在这种情况下,您不能确保
field1
总是在
field2
之前进行验证

您可以通过使用现有jqGrid方法的“子类化”来归档一些附加效果。请看一个例子


更新:更详细地演示上述验证思想。

jqGrid的验证可能性有很多限制,尤其是在内联编辑期间的验证。将调用实现验证的方法
$.jgrid.checkValues
(请参阅源代码的部分),该方法将在读取相应的输入字段时直接调用。因此,没有关于当前验证的其他字段的信息

作为解决方法,您可以在字段验证期间保存字段1中的值。文件D2的验证可以对这两个字段进行验证。这是您在案例中可以使用的方法

var字段1、字段2、,
myCustomCheck=函数(值,colname){
如果(colname==“field1”){
字段1=值;
}else if(colname==“field2”){
字段2=值;
}
如果(字段1!==未定义和字段2!==未定义){
//验证此处的字段
返回[false,“某些错误文本”];
}否则{
返回[真];
}
};
$(“#网格”).jqGrid({
...
colModel:[
... 
{name:'field1',可编辑:true。。。,
编辑规则:{custom:true,custom_func:myCustomCheck},
...
{name:'field2',可编辑:true。。。,
编辑规则:{custom:true,custom_func:myCustomCheck},
...
]
...
});
在编辑之前或之后(在
oneditfunc
aftersavefunc
或其他回调中),不要忘记将
field1
field2
变量重置为
未定义的

在上面的代码中,我使用了
field1
field2
验证的“对称”版本,以使代码在字段顺序发生变化的情况下工作,如果使用,这可能很重要。在这种情况下,您不能确保
field1
总是在
field2
之前进行验证

您可以通过使用现有jqGrid方法的“子类化”来归档一些附加效果。请看一个例子


更新:更详细地演示上述验证思想。

嗨,Oleg,我用我的字段替换了field1、field2,但它没有给出验证field1和field2的预期结果,因为它们都未定义。你可以给我指一个活生生的例子,或者你有空吗?@NatePet:在开始编辑之前,我设置了
field1
field2
变量,并将其重置为
undefined
。我更新了我的答案中的代码,让一切变得更清楚。非常感谢你。非常感谢!嗨,奥列格,我试过你贴的样品。我发现的一个问题是,如果Field1和Field2有一个值,那么它会显示一个错误。这很好用。但是,单击另一行会使两行都处于编辑模式。如果单击另一列,则应重置第一列。希望这是有意义的。我试图重新加载网格,但没有成功。@NatePet:问题与验证问题无关。看哪一个继续你的问题,我在哪里发布了一个解决问题的演示示例。嗨,Oleg,我用我的字段替换了field1,field2,但它没有给出预期的结果,因为field1和field2都没有定义。你可以给我指一个活生生的例子,或者你有空吗?@NatePet:I设置了
field1
field2
变量