Adobe AEM 6.1(granite.ui)TouchUI对话框中有条件地启用/禁用字段

Adobe AEM 6.1(granite.ui)TouchUI对话框中有条件地启用/禁用字段,adobe,aem,Adobe,Aem,是否有人有过根据AEM6.1 TouchUI对话框中先前字段的值有条件禁用字段的经验 为了提供一些上下文,我在TouchUI对话框中有一个复选框,用于启用/禁用(隐藏/显示)组件中的调用操作按钮。我想禁用对话框本身中的CTA buttonText和href字段,其中作者通过复选框禁用了CTA。相反,我想启用这些字段,其中选中CTA复选框启用CTA 我已经调查了/libs/cq/gui/components/authoring/dialog/dropdownshowhide/clientlibs/

是否有人有过根据AEM6.1 TouchUI对话框中先前字段的值有条件禁用字段的经验

为了提供一些上下文,我在TouchUI对话框中有一个复选框,用于启用/禁用(隐藏/显示)组件中的调用操作按钮。我想禁用对话框本身中的CTA buttonText和href字段,其中作者通过复选框禁用了CTA。相反,我想启用这些字段,其中选中CTA复选框启用CTA


我已经调查了/libs/cq/gui/components/authoring/dialog/dropdownshowhide/clientlibs/dropdownshowhide.js,但它并不真正适合这个目的,因为它是专门为隐藏或显示基于下拉列表值的字段而设计的,我试图修改它以允许复选框具有类似功能的尝试不到一个小时硕果累累的我想启用/禁用字段,而不是隐藏或显示它们。

经过一番周折后,我将class=“cq dialog checkbox enabledisable”添加到我的sling:resourceType=“granite/ui/components/foundation/form/checkbox”中,并将class=“cq dialog checkbox enabledisable target”添加到sling:resourceType中=我想在cq:dialog.xml中禁用的“granite/ui/components/foundation/form/textarea”

然后,我创建了自己的clientLib,它依赖于granite.jquery和categories cq.authoring.dialog

更新:事实证明,无法在顶级的pathbrowser字段类型上以编程方式设置disabled属性,因此您需要禁用其中包含的子字段(js coral pathbrowser输入和js coral pathbrowser按钮),下面的代码段已更新以反映这一点


/**
*标准复选框组件的扩展。它基于
*在复选框中进行选择。
*
*如何使用:
*
*-将类cq对话框复选框enabledisable添加到复选框元素
*-将类cq对话框复选框enabledisable target添加到每个可启用/禁用的目标组件
*/
(功能(文档,$){
“严格使用”;
//当对话框被注入时
$(文档).on(“基础内容加载”,函数(e){
//如果已经存在初始值,请确保相应的目标元素可见
enableDisable($(“.cq对话框复选框enableDisable”,e.target));
});
$(文档).on(“更改”,“.cq对话框复选框启用禁用”,函数(e){
启用禁用($(此));
});
功能启用禁用(el){
el.每个(功能(i,元素){
if($(元素).attr(“类型”)=“复选框”){
if($(元素).prop('checked')){
$('.cq对话框复选框enabledisable target').enable();
}否则{
$('.cq对话框复选框enabledisable target').disable();
}
}
})
}
//递归所有pathbrowser子代和子代等
函数iteratePathBrowser子体(节点,启用){
对于(var i=0;i-1)| |(child.className.indexOf('js-coral-pathbrowser-button')>-1)){
enablePathBrowser(子级,启用);
}否则{
iteratePathBrowser子代(子代,启用);
}
}
}
功能启用路径浏览器(节点,启用){
node.disabled=启用;
}
//迭代类cq对话框复选框启用禁用目标并启用
$.prototype.enable=函数(){
$.each(此,函数(索引,el){
//对pathBrowser进行特殊处理,因为它由多个字段组成,不能在顶层禁用
if(el.hasAttribute('data-init')){
if(el.getAttribute('data-init')=='pathbrowser'){
iteratePathBrowser子代(el,false);
};
}否则{
el.disabled=假;
}
});
}
//迭代类cq对话框复选框启用禁用目标和禁用
$.prototype.disable=函数(){
$.each(此,函数(索引,el){
//对pathBrowser进行特殊处理,因为它由多个字段组成,不能在顶层禁用
if(el.hasAttribute('data-init')){
if(el.getAttribute('data-init')=='pathbrowser'){
iteratePathBrowser子代(el,true);
};
}否则{
el.disabled=真;
}
});
}

})(文件,Granite.$)
可能重复的。你能共享你的.content.xml文件吗?@Jdruwe,我想你是指clientLib的.content.xml吗?@Jdruwe,希望这有帮助,顺便说一句,注意上面的clientLib更新,以满足启用/禁用pathbrowser字段的需要。如果你修改它,你不会破坏升级路径吗?@TyMayn不。这是自定义clientLib、 有效扩展cq.authoring.dialog的功能