0

我在使用带有验证的 jsViews(使用来自jsviews.com/#samples的代码)和 jQuery UI 自动完成时遇到了一个问题:
我在字段上有一个转换器(convertBack),可以将输入的文本转换回基于字典的 GUID。如果字段为空无效,则返回 null。

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

问题:有没有办法在 jsViews 中实现原生的重新验证?

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

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

1 回答 1

1

tag.linkedElem是您在其上进行 2 路数据绑定(和验证)的 HTML 元素。

所以如果你只想获取输入元素的当前值,是的,tag.linkedElem.val()很好。

在您的评论之后添加了其他回复:

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

您正在使用

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

DictionaryValue当它绑定到更改时将触发验证。但是您将无效的用户输入字符串和空字符串都映射到相同的空字典值。所以当然从无效字符串切换到空字符串不会触发验证。

您可以更改getKey转换器以将空字符串映射到 null 以外的内容,例如 "" - 然后它就可以工作了。查看更新版本:http: //jsfiddle.net/w43hD/2/

于 2013-12-01T23:50:51.420 回答