[英]Force re-validation in jsViews if data-linked value doesn't change
使用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
tag.linkedElem
是您要在其上进行双向数据绑定(和验证)的HTML元素。
因此,如果您只想获取输入元素的当前值,可以, tag.linkedElem.val()
很好。
在下面的评论后添加了其他回复:
查看您的jsfiddle: http : //jsfiddle.net/w43hD/1/
您正在使用
data-link="{validate DictionaryValue inDictionary='dictionary' convert='fromGuid' convertBack='toGuid'}"
当DictionaryValue
绑定到更改时,它将触发验证。 但是,您会将无效的用户输入字符串和空字符串都映射到相同的DictionaryValue为null。 因此,从无效字符串切换为空字符串当然不会触发验证。
您可以更改getKey
转换器以将空字符串映射到非null以外的其他内容,例如“”-然后它可以工作。 查看更新的版本: http : //jsfiddle.net/w43hD/2/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.