我有监听器选择器隐藏和显示基于所选值的文本字段。我想实现将要强制填写的值。我在我的监听器中使用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();
}
}
由于
答案 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;
}
};