AEM XML 需要 属性 布尔表达式
AEM XML required property with boolean expression
我想知道,是否可以将替代文本设置为非强制性的,同时选中 "Image is decorative"?我正在使用 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)
并在复选框更改时更新备选文本 (mandatory/non)
样本在这里-
(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);
我想知道,是否可以将替代文本设置为非强制性的,同时选中 "Image is decorative"?我正在使用 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) 并在复选框更改时更新备选文本 (mandatory/non) 样本在这里-
(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);