selectionchanged事件不起作用

时间:2014-04-15 16:25:51

标签: extjs cq5 aem

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

的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);
}}

1 个答案:

答案 0 :(得分:2)

如果查看CQ.form.Selection API,您会发现当触发 selectionchanged 事件时,以下参数将传递给侦听器。

  • :选择字段
  • value :所选字段的原始值
  • isChecked :true / false,在选择类型为复选框时使用。

因此,您可以修改您的监听器,如下所示。

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();
    }
}

CQ.Dialog的getField()方法返回具有给定名称的字段。如果存在多个具有相同名称的字段,则返回这些字段的数组。然后,您可以根据需要显示()或隐藏()字段。

编辑: CQ 5.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();
    }
}