Как показать скрытые элементы на основе выбора внутри мультиполя в Touch UI AEM 6?

У меня есть выпадающий список, который имеет две опции "изображение" и "значок".

Когда пользователь выбирает "изображение", я хочу показать браузер, а когда он выбирает "значок", я показываю текстовое поле.

Это известная проблема, теперь я хочу сделать это, когда эти вышеупомянутые поля находятся внутри мультиполя в Touch UI.

Скажем, у меня есть два элемента в этом мультиполе, когда я выбираю "изображение", в элементе выбора, присутствующем в первом элементе (из мультиполя), в показе OOTB скрывается мое текстовое поле "значок" первого и второго элемента в мультиполе. также.

Как мне решить это?

Короче говоря, смотрите блог. Я хочу сделать это. Просто мои поля внутри многополя.

Примечание. Мне удалось реализовать код классического пользовательского интерфейса, используя ExtJs field.nextSibling(), поэтому я не влияю на записи в других записях многопользовательских элементов.

1 ответ

Найдите код ниже и для более подробной информации проверьте эту ссылку здесь

.content.xml

<enable
    jcr:primaryType="nt:unstructured"
    sling:resourceType="granite/ui/components/foundation/form/checkbox"
    text="Enable"
    id="enable"
    value="true"
    name="./enable"
    class="cq-dialog-checkbox-showhide"
    cq-dialog-checkbox-showhide-target=".button-option-enable-showhide-target"/>
<deleteEnable
        jcr:primaryType="nt:unstructured"
        sling:resourceType="granite/ui/components/foundation/form/hidden"
        name="./enable@Delete"
        value="true"/>
<showHideContainer
        jcr:primaryType="nt:unstructured"
        sling:resourceType="granite/ui/components/foundation/container"
        class="hidden button-option-enable-showhide-target"
        showhidetargetvalue="true">
    <items jcr:primaryType="nt:unstructured">

        <!-- some components to show/hide -->

    </items>
</showHideContainer>

checkboxshowhide.js

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

    // when dialog gets injected
    $(document).on("foundation-contentloaded", function(e) {
        // if there is already an inital value make sure the according target element becomes visible
        $(".cq-dialog-checkbox-showhide").each( function() {
            showHide($(this));
        });

    });

    $(document).on("change", ".cq-dialog-checkbox-showhide", function(e) {
        showHide($(this));
    });

    function showHide(el){

            // get the selector to find the target elements. its stored as data-.. attribute
            var target = el.data("cqDialogCheckboxShowhideTarget");

            // is checkbox checked?
            var checked = el.prop('checked');

            // get the selected value
            // if checkbox is not checked, we set the value to empty string
            var value = checked ? el.val() : '';

            // make sure all unselected target elements are hidden.
            $(target).not(".hide").addClass("hide");

            // unhide the target element that contains the selected value as data-showhidetargetvalue attribute
            $(target).filter("[data-showhidetargetvalue='" + value + "']").removeClass("hide");

       }

    })(document,Granite.$);
Другие вопросы по тегам