Extjs 如何在文本更改时验证cq5下拉小部件(xtype=selection&;type=select)?

Extjs 如何在文本更改时验证cq5下拉小部件(xtype=selection&;type=select)?,extjs,aem,Extjs,Aem,我在cq5对话框的多字段小部件中有一个下拉列表(xtype=selection&type=select)。我使用“选项”属性动态填充下拉列表。我还将“editable”属性添加为true,以便作者可以从下拉列表中的大量值中键入并选择一个值。现在的问题是,作者可以键入任何值并保存,但我想在键入的值与下拉列表中的任何值不匹配且不保存对话框时立即抛出错误。只要实现了我的功能,我就可以更改小部件类型。我可以编写一个servlet在后端进行验证。有人能帮我完成我应该使用的正确事件吗 注意:“selecti

我在cq5对话框的多字段小部件中有一个下拉列表(xtype=selection&type=select)。我使用“选项”属性动态填充下拉列表。我还将“editable”属性添加为true,以便作者可以从下拉列表中的大量值中键入并选择一个值。现在的问题是,作者可以键入任何值并保存,但我想在键入的值与下拉列表中的任何值不匹配且不保存对话框时立即抛出错误。只要实现了我的功能,我就可以更改小部件类型。我可以编写一个servlet在后端进行验证。有人能帮我完成我应该使用的正确事件吗


注意:“selectionchanged”事件不符合我的要求。我需要在textfield中添加类似“change”的内容。

只需连接到现有的验证管道,而无需处理on change事件、自行创建验证消息并在需要时删除所有错误

CQ
Ext.form.TextField
widget接受。您可以在小部件声明中传递它

<value
    jcr:primaryType="cq:Widget"
    fieldLabel="Provide value"
    name="./value"
    validator="function(value) { }"
    xtype="textfield"/>     
如果没有错误(因此字段验证),函数本身应该返回true,或者在发生错误时返回带有正确验证消息的字符串

在您的例子中,您只需要迭代所有下拉列表,并检查键入的值是否与其中任何一个匹配

另一方面,如果作者必须从一个完整的集合中提供一个值,我认为对他来说,提供另一个只允许值的下拉列表可能是一个很好的体验

constructor : function(config) {
    config = CQ.Util.applyDefaults(config, {
        "validator": function(value) {
        }
    }
    ...
}