我的对话框中有两个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);
}}
答案 0 :(得分:2)
如果查看CQ.form.Selection API,您会发现当触发 selectionchanged 事件时,以下参数将传递给侦听器。
因此,您可以修改您的监听器,如下所示。
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();
}
}