在侦听器中使用javascript隐藏自定义多字段的字段

时间:2015-11-18 11:42:10

标签: javascript cq5 aem

我在具有两种变体的组件中定制了多字段形式。 在我的组件的一个变体中,我想隐藏一个在自定义多字段内的字段(标题)。我在监听器中使用以下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();    
    }
}

3 个答案:

答案 0 :(得分:1)

在回答之前,很少有人指出:

  1. 您必须仅在窗口小部件文件中编写侦听器。
  2. 下面是示例代码,其中我有2个字段。第一个字段是 mytext 字段,另一个字段是 myselection 。在更改myselection字段中的值时,我正在切换文本字段的可见性。
  3. 以下是摘录:

    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>);向您展示了一层深度的对象结构。