2014-10-04 1 views
2

나는 선택한 값에 따라 텍스트 필드를 숨기거나 표시하는 리스너를 수신기에 사용하고 있습니다. 필자가 기입해야하는 값을 구현하고 싶습니다. 리스너 내부에서 allowdBlank를 사용했지만 작동하지 않았습니다. 아래는 내 청취자입니다.리스너를 사용하여 텍스트 필드를 만드는 방법

function(selection,record,path) 
{ 
var dialog=selection.findParentByType('panel'); 
var email = dialog.getComponent('email1'); 
var url = dialog.getComponent('url1'); 
if(record == 'email'){ 
    url.hide(); 
    url.setValue(""); 
    email.show(); //how to make email manadory 
} 
if(record == 'link'){ 
    email.hide(); 
    email.setValue(""); 
    url.show(); 
} 
} 

감사

+0

은 나뿐만 아니라 이것을 시도, 나는 그것을 잘 기억한다면 구성 요소가 작성된 후에 필수 플래그를 변경할 수 없습니다. – Thomas

답변

5

은 내가 아니면 selectionChanged 청취자의 "allowBlank"를 사용했습니다. 필자는 여러 번 필요/불필요한 필드를 전환하는 데 성공적으로 사용했습니다. 당신의 예제에 맞는 작업 코드가 있습니다 (필자는 필수 필드와 관련이없는 부분을 생략했습니다).

<type 
    jcr:primaryType="cq:Widget" 
    fieldLabel="Type" 
    name="./type" 
    type="radio" 
    xtype="selection"> 
    <options jcr:primaryType="cq:WidgetCollection"> 
     <email 
       jcr:primaryType="nt:unstructured" 
       text="Email" 
       value="email"/> 
     <url 
       jcr:primaryType="nt:unstructured" 
       text="Url" 
       value="url"/> 
    </options> 
    <listeners 
     jcr:primaryType="nt:unstructured" 
     selectionchanged="function(field,value) { 
           MyDialog.setRequired(field,value); }"/> 
</type> 

리스너 자바 스크립트 :

대화 상자 :뿐만 아니라 getComponent의 getField 방법을 사용

MyDialog.setRequired = function(field,value) { 
    var dialog = field.findParentByType("dialog"), 
     email = dialog.getField('./email1'); 

    if('url' == value) { 
     email.allowBlank = true; 
    }else{ 
     email.allowBlank = false; 
    } 
}; 
관련 문제