我在具有两种变体的组件中定制了多字段形式。 在我的组件的一个变体中,我想隐藏一个在自定义多字段内的字段(标题)。我在监听器中使用以下JavaScript代码。 此代码无效。我哪里错了?
function() {
var dialog = this.findParentByType('dialog');
var contenttype = dialog.getField("./type").getValue();
var teaserlinks = dialog.getField("./teaserlinks");
var title = dialog.getField("./teaserlinks").getField("./title");
alert(title);
if(contenttype == 'variation-1'){
teaserlinks.show();
title.hide();
}
else if(contenttype == 'variation-2'){
teaserlinks.show();
}
}
答案 0 :(得分:1)
在回答之前,很少有人指出:
以下是摘录:
this.mytext = new CQ.form.textField({...})
this.myselection = new CQ.form.Selection({
fieldLabel:"my selection",
type:"select",
width : "325",
allowBlank:false,
defaultType:"String[]",
fieldDescription : "Select value from dropdown",
options: "/a/b/c.json",
listeners : {
selectionchanged : function(){
var mytext = this.findParentByType('mywidget').mytext;
mytext.hide();
}
}
});
我希望这会有所帮助。
答案 1 :(得分:1)
尝试使用node的hidden属性。最初将hidden属性设置为true,并在javascript文件中将hidden属性更改为false(或根据您的要求)。
答案 2 :(得分:0)
我对aem和Adobe CQ5一无所知,但我可以给你一些如何调试脚本的提示。
首先不要使用alert
进行调试! (BTW alert(title);
显示什么?)
我建议打开浏览器控制台(例如,在Firefox上按<F12>
并切换到“控制台”选项卡)。
此处浏览器显示所有异常和错误消息。另外,您可以使用console.log(“...”);`从脚本输出一些文本。
这是我对您的计划的编辑。也许输出可以帮助你。
function()
{
var dialog = this.findParentByType('dialog');
var contenttype = dialog.getField("./type").getValue();
var teaserlinks = dialog.getField("./teaserlinks");
var title = dialog.getField("./teaserlinks").getField("./title");
console.dir(title);
console.log(contenttype);
teaserlinks.show();
if(contenttype == 'variation-1')
{
title.hide();
}
else if(contenttype == 'variation-2')
{
title.show();
}
}
而且,console.dir(<object>);
向您展示了一层深度的对象结构。