2014-04-15 294 views
0

我的對話框中有兩塊木條,一塊是文本框(左邊框),另一塊是帶有四個選項(選項1,選項2,選項3,選項4)的下拉菜單。我的要求是顯示/當用戶僅選擇選項3和選項4時啓用textfiled。 我添加了監聽器(selectionchanged)節點到下拉字段。 loadcontent事件觸發但selectionchanged工作不正常。請從下面的代碼片段selectchanged事件不起作用

的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

什麼是對話框結構?您在開發者控制檯中發現的任何JavaScript錯誤? – rakhi4110

回答

2

如果你看一下CQ.form.Selection API,你會發現,當的SelectionChanged事件被激發,以下參數將被傳遞給聽衆。

  • :選擇字段
  • :所選字段的原始值
  • 器isChecked:真/假,當選擇的類型爲複選框的使用。

因此,您可以修改您的偵聽器,如下所示。

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()方法返回給定名稱的字段。如果存在多個具有相同名稱的字段,則會返回這些字段的數組。然後,您可以根據您的要求顯示()或隱藏()字段。

EDIT: 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(); 
    } 
} 
+0

謝謝。它工作正常。只能隱藏文本字段。我也想隱藏字段標籤和描述。無論如何要做到這一點? – user2930621

+0

這將隱藏整個字段,以及fieldLabel和描述。你的對話結構是什麼?你可以發佈嗎? – rakhi4110

+0

謝謝!!!它在5.4代碼中工作正常 – user2930621