我在cq5对话框中的多字段小部件中有一个下拉列表(xtype = selection& type = select)。我正在使用" options"动态填充下拉列表。属性。我还添加了#34; editable" property为true,以便作者可以在下拉列表中键入并从大量值列表中选择一个值。现在的问题是,作者可以键入任何值并保存,但我想在输入的值与下拉列表中的任何值不匹配时抛出错误,并且不保存对话框。只要我的功能实现,我就可以更改窗口小部件类型。我可以编写一个servlet来在后端进行验证。任何人都可以帮助我正确的事件,我应该用它来实现这一目标吗?
注意:' selectionchanged'事件不符合我的要求。我需要像“改变”这样的东西。在textfield。
答案 0 :(得分:2)
不是处理on change事件,而是自己创建验证消息并在需要时删除所有错误,只需附加到现有的验证管道。
CQ Ext.form.TextField
窗口小部件接受validator
object。您可以在小部件声明
<value
jcr:primaryType="cq:Widget"
fieldLabel="Provide value"
name="./value"
validator="function(value) { }"
xtype="textfield"/>
或在JS中,如果你要覆盖xtype:
constructor : function(config) {
config = CQ.Util.applyDefaults(config, {
"validator": function(value) {
}
}
...
}
如果没有错误(所以字段验证)或者在发生错误时带有正确验证消息的字符串,函数本身应返回true。
在您的情况下,您只需要遍历所有下拉列表并检查键入的值是否与其中任何一个匹配。
另一方面 - 如果作者必须提供一套完整的价值 - 我认为为他提供另一个只有允许值的下拉列表可能是一个很好的体验。