2017-01-14 31 views
0

正如它在另一个问题(jqgrid editoptions custom_func with required=false)中所述,现在我需要使用custom_func验证输入。此验证需要将输入值与用户输入的另一列值进行比较。换句话说,需要在提交之前获取所有当前行值以确定验证结果。 我设法得到一些特定的列这样...Jqgrid custom_func验证并获取所有行编辑值

function myCustomFunc(value, colName) { 
    //consider I have a global var "selRowId" which is updated onSelectRow event. 
    var someColValue = $('select#'+selRowId+'_someColName').val(); 
    // ... here the validation using the "someColValue" ... 
} 

我觉得这是不是最好的方法。我更喜欢一些返回类似于“getRowData”但包含用户输入值的对象的方法。

我正在使用jqGrid 4.6.0

回答

1

看来你使用内联编辑。版本4.6中的jqGrid没有其他可能性来访问当前值,但免费的jqGrid(来自GitHub的初始版本4.13.7)的当前源包含新的回调saveRowValidation和事件jqGridInlineSaveRowValidation,这可以简化您需要实现的内容。

回调saveRowValidation包含一个参数,就像其他大多数在自由jqGrid中实现的回调一样。参数,让我们,我们将其命名为options,包含以下属性

  • mode与价值"edit""add"
  • rowid - 编辑排
  • newData的id属性的值 - 对象与修改该行的数据
  • savedRow - 带编辑前行数据的对象
  • options - 选项内联编辑
  • iRow第 - DOM元素,代表了编辑行

我认为options.newData是你所需要的 - 行的从电网

  • tr顶部的指标。有关更多详细信息,请参阅the commit的评论。

  • +0

    我认为saveRowValidation是一个很好的解决方案,我会尝试一下,只要我可以实现新版本的免费jqgrid。 当前版本是4.13.6?还是4.13.7? – Aberel

    +0

    @Aberel:最新的*发布*版本是“4.13.6”(2016年12月24日)。在最后一个版本之后,在代码中进行了第一次更改之后,我将版本号增加(“4.13.7-pre”)。回调'saveRowValidation'(和事件'jqGridInlineSaveRowValidation')于2017年1月4日提交。我通常每月发布一个新版本。因此,我计划在大约1-2周内发布下一个“4.13.7”版本。 – Oleg