当我设置editrules custom_func和required = false时,custom_func仅在用户输入值时有效。我的意思是,如果用户将输入留空,则jqgrid会跳过custom_func。 在我的情况下,我想验证字段值是否为空,具体取决于同一行中的其他用户值。所以我不能在colmodel中设置required = false,因为我需要在提交后验证它。
这是一个伪custom_func,不要注意其内容:
colmodel: [
{name:'xxx', editrules: {
required:false,
custom:true,
custom_func: function(value) {
if(othercolumn=='blah' && value=='' ) {
//this is error
} else {
//this is correct
}
}
}}
]
编辑:我正在使用jqGrid 4.6.0(我仍在单独的分支中测试免费的4.13.6)
答案 0 :(得分:1)
首先,我认为您发布了错误的代码属性。我想您在required
内使用了custom
,custom_func
和editrules
,而不是editoptions
内部(请参阅the documentation)。
秒你应该总是包含你使用(可以使用)的jqGrid版本的信息,以及关于jqGrid的分支(free jqGrid,商业Guriddo jqGrid JS或版本中的旧jqGrid< = 4.7)。不同版本和jqGrid的不同分支的可能性是不同。
要解决您的问题,您应该不要在列中指定 required
属性或使用required: undefiled
。仅在显式使用required: true
的情况下,验证将由空值停止。如果您明确指定 required: false
,则不会在空值上调用custom_func
。 true
属性false
和required
的任何其他值都允许您进行自定义验证。
您遇到的下一个问题是需要访问另一列的值以进行自定义验证。它应该是单独问题的一部分。了解你使用的jqGrid的分支,jqGrid的版本和编辑模式(内联编辑,表格编辑或单元格编辑)非常重要。