我是 AEM 新手。
我正在研究 CQ5 脚手架表单。几个字段标有 allowBlank=false,这会阻止作者在处理它们之前更新表单。
问题是字段分散在一个很长的表单中,我们想告诉用户他们需要填写的字段的名称。
在脚手架上单击更新按钮时,我不知道如何运行 javascript。
最佳答案
在您的对话框中,添加一个监听器以注册“beforesubmit”事件的回调,如下所示:
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="cq:Dialog"
title="Your Component"
xtype="dialog">
<items jcr:primaryType="cq:TabPanel">
...
</items>
<listeners
jcr:primaryType="nt:unstructured"
beforesubmit="function(dialog){return YourNamespace.validate(this);}" />
</jcr:root>
然后,在任何时候使用组件(例如通过向组件添加客户端库)时包含的 JavaScript 文件中,您可以编写所需的 JavaScript。例如:
YourNamespace = {};
YourNamespace.validate = function (dialog) {
var buttonText = dialog.getField('./buttonText'),
buttonUrl = dialog.getField('./buttonUrl'),
isValid = true,
validMsg = 'Validation Failed: You must fill out this field.';
if(buttonText.getValue().length > 0 && buttonUrl.getValue().length === 0){
isValid = false;
}
if(!isValid){
CQ.Ext.Msg.show({title: 'Validation Failed', msg: validMsg, buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR});
return false;
}
};
请引用小部件 API,了解您可以对作为参数传入的对象执行的操作的详细信息,例如上例中的“对话框”对象:https://docs.adobe.com/docs/en/cq/5-6-1/widgets-api/index.html
关于javascript - 如何显示未填写的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32970093/