我同意,我自己也遇到过这种行为。这是解决方案。
将 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 是连续未定义的。
希望这是有道理的,我的代码可以帮助你。