如何使用侦听器制作文本字段

时间:2014-10-04 11:10:14

标签: cq5 aem

我有监听器选择器隐藏和显示基于所选值的文本字段。我想实现将要强制填写的值。我在我的监听器中使用allowdBlank为true但它不起作用。以下是我的听众。

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(); 
}
}

由于

1 个答案:

答案 0 :(得分:5)

我已经使用了" allowBlank"在selectionChanged监听器上。我已经成功地使用它来按需要/不需要多次切换字段。这里有一些适合您示例的工作代码(我省略了与必填字段无关的部分)。它也使用getField方法而不是getComponent:

<强>对话框:

<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>

侦听器JavaScript:

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

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