我已经为我的一列配置了requiredFieldValidator,它对现有行的工作与预期一样。当我按tab键浏览或单击开始编辑新行时,当移出列时验证器不会触发。当移出新行(列中没有数据),使其提交,然后移回该行时,现在验证器works...but仅当我在编辑器中放入一些数据,然后删除它。
换句话说,对于新行,在我实际在列中键入内容之前,requiredFieldValidator不会执行任何操作。如果我把一列留空,它永远不会触发,这就违背了它的目的。有趣的是,他们提供的示例(http://mleibman.github.com/SlickGrid/examples/example3-editing.html)显示了同样的问题。
发布于 2012-12-17 13:27:45
我同意,我自己也遇到过这种行为。以下是解决方案。
将this.isValueChanged函数的内容更改为以下内容。
if(($input.val().length > 0) && ($input.val() != defaultValue))
return true;
else if(($input.val() == defaultValue)&&($input.val().length > 0))
return true;
else if(($input.val().length == 0) && ((undefined === defaultValue )||(defaultValue == "")))
return true;
else
return false;由于某些原因,在第一次交互时没有设置defaultValue,我猜如果您将其初始化为"“,您将不需要检查是否未定义。
无论如何,defaultValue保存该单元格的前一个值,因此当它为空并且它是第一个被编辑的单元格时,它是未定义的,之后,对于所有其他空单元格,它被设置为"“。
问题是,此函数需要告诉网格该值已更改,以便单元格编辑器验证输入。在所提供的实现中,表达式总是返回false,因为
$input.val() == "" evaluates to true and then the expression
!($input.val() == "" && defaultValue == null)) evaluates to false这意味着defaultValue一直是未定义的。
希望这是有意义的,我的代码可以帮助你。
https://stackoverflow.com/questions/11937271
复制相似问题