【问题标题】:jqgrid editoptions custom_func with required=falsejqgrid editoptions custom_func with required=false
【发布时间】:2017-01-14 12:37:09
【问题描述】:

当我设置 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)

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    首先,我认为您发布了错误的代码属性。我猜您在editrules 内部而不是editoptions 内部使用指定requiredcustomcustom_func(参见the documentation)。

    您应该始终包含有关您使用(可以使用)的 jqGrid 版本以及 jqGrid 分支(free jqGrid、商业 Guriddo jqGrid JS 或旧 jqGrid 的信息在版本 不同的。

    要解决您的问题,您应该不要在列中指定required 属性或使用required: undefiled。只有在 显式 使用 required: true 的情况下,验证将由空值停止。如果您明确地指定required: false,那么custom_func 将不会被空值调用。 required 属性的 truefalse 等任何其他值都允许您进行自定义验证。

    您遇到的下一个问题是需要访问 另一列 的值以进行自定义验证。它应该是单独问题的一部分。了解你使用的 jqGrid 的 fork、jqGrid 的版本和编辑模式(内联编辑、表单编辑或单元格编辑)很重要。

    【讨论】:

    • yes 是 editrules(已编辑),而 jqGrid 4.6.0 你是对的,我有一个 jqgrid 包装器,如果未声明,它会强制默认 required=false。因此,我删除了该默认属性,以便可以将 custom_func 与任何值一起使用。谢谢!
    • 关于上一个问题:“获取另一个输入列的值”,我再发一个新问题。
    • @Aberel:好的。顺便说一句,after 4.13.6 的内联编辑代码包含新的回调 saveRowValidation ,它简化了最终验证。回调saveRowValidation 的参数的属性newData(参见the lines)包含所有新的(更改的)数据。如果您真的使用内联编辑,它可以简化您需要实现的内容。更多详情请参阅the commit 的评论。
    • Oleg:谢谢,我正在测试 4.13.6 并发现了一些需要在包装器中解决的问题。与此同时,我为这个主题发布了一个新问题。 (stackoverflow.com/questions/41655716/…)。是的,我使用内联编辑。
    • @Aberel:我已经发布了我的答案。你的“包装器”是什么样子的?你到底有什么问题?
    猜你喜欢
    • 2017-05-19
    • 2023-03-21
    • 2016-08-01
    • 2017-05-30
    • 1970-01-01
    • 2011-08-24
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多