Skip to main content
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Techaspect_Solu
Techaspect_SoluAccepted solution
Level 7
Sep 25, 2017 6:21 PM UTC

Hi,

I was able to set min size and max size restrictions in multifield in AEM 6.3.

Max size restriction: Following sample code can be used to put max size restriction in a multifield -

1. Add a new property - "maxlinksallowed" to the multifield node in your cq:dialog. Refer the screenshot below -

2. Put the below sample code in a clientlibs JS file with category "cq.authoring.dialog".

$(document).on("dialog-ready", function () {

$(".js-coral-Multifield-add").click(function() {

    var field = $(this).parent();

    var size = field.attr("data-maxlinksallowed");

    if (size) {

        var ui = $(window).adaptTo("foundation-ui");

        var totalLinkCount = $(this).prev('ol').children('li').length;

        if (totalLinkCount >= size) {

            ui.alert("Warning", "Maximum " + size + " links are allowed!", "notice");

            return false;

        }

    }

});

});

Below is the screenshot of sample output:

Min size restriction: Following sample code can be used to put min size restriction in a multifield -

1. Add a new property - "minlinksallowed" to the multifield node in your cq:dialog. Refer the screenshot below -

2. Put the below sample code in a clientlibs JS file with category "cq.authoring.dialog".

(function (document, $, ns) {

     "use strict";

$(document).on("click", ".cq-dialog-submit", function (e) {

     e.stopPropagation();

     e.preventDefault();

    var $form = $(this).closest("form.foundation-form"), title = $form.find("[name='./jcr:title']").val(), message, clazz = "coral-Button ";

    var fieldd = $(".coral-Multifield");

    var sizee = fieldd.attr("data-minlinksallowed");

    if(($(this).prev('ol').children('li').length) < sizee){

              message = "Minimum" + sizee + " links are required. Are you sure to submit?";

              clazz = clazz + "coral-Button--warning";

    }

    ns.ui.helpers.prompt({

             title: Granite.I18n.get("Confirm"),

             message: message,

             actions: [{

                    id: "CANCEL",

                    text: "CANCEL",

                    className: "coral-Button"

                },{

                    id: "SUBMIT",

                    text: "SUBMIT",

                    className: clazz

                }

            ],

             callback: function (actionId) {

                if (actionId === "SUBMIT") {

                    $form.submit();

                }

            }

        });

    });

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

Below is the screenshot of sample output:

Regards,

TechAspect Solutions

11 replies

Level 2
Dec 10, 2018 11:15 AM UTC

Hi All,

I have also achieved the above using below code snippet:

For Maximum links validation:

Add a new property - "maxlinksallowed", type- String to the multifield node in your cq:dialog.

Add below javascript code to touchui js file.

            $(".js-coral-Multifield-add").click(function() {

            var field = $(this).parent();

            var size = field.attr("data-maxlinksallowed");

            if (size) {

                var ui = $(window).adaptTo("foundation-ui");

                var totalLinkCount = $(this).prev('ol').children('li').length;

                if (totalLinkCount >= size) {

                    ui.alert("Warning", "Maximum " + size + " links are allowed!", "notice");

                    return false;

                }

             }

           });

For Minimum links validation:

Add a new property - "minlinksallowed" , type- String to the multifield node in your cq:dialog.

Add below javascript code to touchui js file.

        $(document).on("click", ".cq-dialog-submit", function () {

            var $multifields = $("[" + DATA_EAEM_NESTED + "]");

            if(_.isEmpty($multifields)){

                return;

            }

            var $form = $(this).closest("form.foundation-form");

            var fieldd = $(".coral-Multifield");

            var minsize = fieldd.attr("data-minlinksallowed");

            var multilinks = $multifields.length-1;

            if (multilinks < minsize) {

                var ui = $(window).adaptTo("foundation-ui");

                ui.alert("Warning", "Minimum " + minsize + " link is required!", "notice");

                return false;

            }

        });

Regards,

Mayank Saxena

Cognizant Technology Solutions

Translate