javascript - 如何显示未填写的字段

标签 javascript aem

我是 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/

相关文章:

javascript - 异步行为。递归 setTimeout 未完成

javascript - 如何在构造函数中执行异步函数?

aem - AEM 6.2 中的日志

javascript - 在经典对话框中选择的下拉值在触摸 UI 对话框中不会显示相同的值

testing - AEM 组件的响应测试 (Adobe Experience Manager)

javascript - Google 字体 API - 文本未显示?

javascript - 现在用日期时间命名文件(JS)

javascript - tinymce 尝试在 remove() 之后保存

javascript - CQ5 AEM : how to get a component by name within a dialog using javascript

java - "Content-Disposition header"中的配置 "Apache HTTP Server"