xml - 带有 bool 表达式的 AEM XML 必需属性

标签 xml aem

我想知道,在选中“图像是装饰性的”时,是否可以将替代文本设置为非强制?我正在使用 AEM 6.5,这是代码。

<decorative jcr:primaryType="nt:unstructured" sling:resourceType="granite/ui/components/coral/foundation/form/checkbox" checked="${not empty cqDesign.isDecorative ? cqDesign.isDecorative : false}" fieldDescription="Check if the image should be ignored by assistive technology and therefore does not require an alternative text. This applies to decorative images only."
  name="./isDecorative" text="Image is decorative" uncheckedValue="false" value="{Boolean}true" />
  
<alt jcr:primaryType="nt:unstructured" sling:resourceType="granite/ui/components/coral/foundation/form/textfield" fieldDescription="For visually impaired users using screen readers. Describe the functionality of the image or what you see in the image. Don't include 'image of', 'picture of', etc. If the image is purely graphical, select 'Image is decorative'."
  fieldLabel="Alt text" name="./alternativeText" required="${not empty cqDesign.isDecorative ? false : cqDesign.isDecorative}" />

我知道 AEM 支持 required="{Boolean} true" 或简单的 required="false" 等表达式。我已经尝试过(如上所示)required="${not empty cqDesign.isDecorative ? false : cqDesign.isDecorative}",但 id 不起作用。

最佳答案

@Michal - 你需要为此写下 js 代码, 它应该在创作时加载(extraClientlibs) 并在复选框更改时更新提交的替代文本(强制/非) 示例在这里 -

(function(document, $, Coral) {
    "use strict";

    // when dialog gets injected
    $(document).on("foundation-contentloaded", function(e) {
        // if there is already an initial value make sure the according target element becomes visible
        makeMandatoryAAlt($(".makemandatory", e.target));

    });

    // To mandatory/non figure
    $(document).on("change", ".makemandatory", function(e) {
        makeMandatoryAlt($(this));
    });

    // Mandatory or Non Alt
    function makeMandatoryAlt(el) {
         el.each(function(i, element) {
              if ($(element).prop('checked')){
                  //making mandatory.
                  $("[name='./altText']").attr('required',true);
              } else {
                  //making not mandatory.
                  $("[name='./altText']").removeAttr('required');
                  $("[name='./altText']").removeAttr('aria-invalid');
                  $("[name='./altText']").removeAttr('aria-required');
                  $("[name='./altText']").removeAttr('invalid');
              }
        })
    }

})(document,Granite.$,Coral);

关于xml - 带有 bool 表达式的 AEM XML 必需属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62261048/

相关文章:

aem - 使用 AEM 净化输入

css - 一个页面上的多个 Parsys

content-management-system - AEM 新页面与新站点

java - 使用 SimpleXML 反序列化

c# - xsl 格式日期(子字符串 + 连接?)

java - 在 Java 中设置 EditText 行和位置?

aem - 在作者实例中预览

aem - 如何将 CSS 样式设置为 cq :dialogue in AEM

c# - 序列化时忽略 XML 属性

java - 如何使用Java API通过XSLT解析xml字符串并仅在内存中生成输出?