如果数据链接值未更改,则强制在jsViews中重新验证

时间:2013-11-30 23:15:04

标签: javascript validation jsviews

我在使用jsViews进行验证(使用jsviews.com/#samples中的代码)和jQuery UI Autocomplete时遇到了一个问题:
我在字段上有一个转换器(convertBack),它根据字典将输入的文本转换回GUID。如果字段为空无效,则返回null。

问题是jsViews没有注意到从一个空值到另一个空值的更新(即空白到无效,反之亦然)。我尝试通过手动将验证标记上的refreshValidates()调用添加到DOM onChange来解决此问题,但输入的任何无效值都会被删除。

问题:有没有办法在jsViews本地实现重新验证?

我更改了jsViews验证码以允许检查显示的值:
[onAfterLink]结束:它传递当前(显示的)值,而不仅仅是转换后的值(在两种情况下都是null):

 (...)
    tag.validate(tagCtx.args[0], tag.linkedElem.val()); // Validate initial data

1 个答案:

答案 0 :(得分:1)

tag.linkedElem是您正在进行双向数据绑定(和验证)的HTML元素。

因此,如果您只想获取input元素的当前值,是的,tag.linkedElem.val()是好的。

根据您的评论添加了其他回复:

看着你的jsfiddle:http://jsfiddle.net/w43hD/1/

您正在使用

data-link="{validate DictionaryValue inDictionary='dictionary' convert='fromGuid' convertBack='toGuid'}"

会在DictionaryValue绑定到更改时触发验证。但是,您将无效的用户输入字符串和空字符串映射到null的同一DictionaryValue。因此,当然从无效字符串切换到空字符串不会触发验证。

您可以更改getKey转换器,将空字符串映射到null以外的其他字符串,例如“” - 然后它有效。查看更新版本:http://jsfiddle.net/w43hD/2/