我在使用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
答案 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/