Extjs selectionchanged事件不起作用

Extjs selectionchanged事件不起作用,extjs,aem,Extjs,Aem,我的对话框中有两个字段,一个是文本字段(leftpadding),另一个是带有四个选项的下拉列表(选项1、选项2、选项3、选项4)。我的要求是在用户仅选择选项3和选项4时显示/启用文本字段。 我将listeners(selectionchanged)节点添加到下拉字段中。loadcontent事件正在触发,但selectionchanged无法正常工作。请在下面查找代码片段 选择已更改: function(field,value){ var layoutoption = ""; layout

我的对话框中有两个字段,一个是文本字段(leftpadding),另一个是带有四个选项的下拉列表(选项1、选项2、选项3、选项4)。我的要求是在用户仅选择选项3和选项4时显示/启用文本字段。 我将listeners(selectionchanged)节点添加到下拉字段中。loadcontent事件正在触发,但selectionchanged无法正常工作。请在下面查找代码片段

选择已更改:

function(field,value){ 

var layoutoption = "";
layoutoption = field.findParentByType('dialog').form.findField('./footerstyle').getValue();
alert('layoutoption :'+layoutoption);
if(layoutoption =='3' || layoutoption =='4'){
    field.findParentByType('dialog').form.findField('./leftPadding').enable(this);
}else {
    field.findParentByType('dialog').form.findField('./leftPadding').disable(this);
}}
如果查看API,您会发现当触发selectionchanged事件时,会将以下参数传递给侦听器

  • 这是:选择字段
  • 值:所选字段的原始值
  • isChecked:true/false,当选择类型为checkbox时使用
因此,您可以修改您的侦听器,如下所示

function(field, value) { 
    var dlg = field.findParentByType('dialog');
    // the value holds the value of the selection
    if(value =='3' || value =='4'){
        // getField() of the dialog class returns the field with the given name
        dlg.getField('./leftPadding').show();
    }else {
        dlg.getField('./leftPadding').hide();
    }
}
的getField()方法返回具有给定名称的字段。如果存在多个同名字段,则返回这些字段的数组。然后可以根据需要显示()或隐藏()字段

编辑: CQ5.4不知何故并没有删除整个小部件,而是只删除留下字段标签、描述等的输入字段

在这种情况下,可使用以下功能

function(field, value) {
    var dlg = field.findParentByType('dialog');
    if(value == '3' || value == '4') {
        dlg.getField('./leftPadding').el.parent('.x-form-item').show();
    }
    else { 
        dlg.getField('./leftPadding').el.parent('.x-form-item').hide();
    }
}

对话结构是什么?您在开发人员控制台中注意到任何javascript错误吗?谢谢。它工作得很好。只能隐藏文本字段。我想隐藏字段标签和描述也。是否仍要执行此操作?这将隐藏整个字段以及字段标签和描述。你的对话结构是什么?你能把它寄出去吗?