Javascript 为CQ5中的自定义多字段元素设置最小值和最大值?

Javascript 为CQ5中的自定义多字段元素设置最小值和最大值?,javascript,aem,day-cq,Javascript,Aem,Day Cq,我目前正在开发一个包含自定义多字段的AEM组件,我遇到了一个不知道如何解决的问题。 我已经为此创建了一个自定义小部件,它允许在multiefield中包含multiefield。从阅读的文档中,据我所知,widgetsapi配置没有默认配置 我的对话框节点: <questions jcr:primaryType="cq:Widget" xtype="panel" title="Questions"> <items jcr:primaryType=

我目前正在开发一个包含自定义多字段的AEM组件,我遇到了一个不知道如何解决的问题。 我已经为此创建了一个自定义小部件,它允许在multiefield中包含multiefield。从阅读的文档中,据我所知,widgetsapi配置没有默认配置

我的对话框节点:

<questions
    jcr:primaryType="cq:Widget"
    xtype="panel"
    title="Questions">
    <items jcr:primaryType="cq:WidgetCollection">
        <quiz-data
                jcr:primaryType="cq:Widget"
                fieldDescription="Click the '+' to add a new data"
                fieldLabel="Quiz"
                name="./quizData"
                xtype="multifield">
            <fieldConfig
                    jcr:primaryType="cq:Widget"
                    xtype="apps.mypath.widgets.MultieField"/>
        </quiz-data>
    </items>
</questions>

如果有人能解释我如何为我的自定义多字段或任何其他想法实现这一点,那就太好了?如果您有任何问题,请告诉我。

要在经典UI中实现JavaScript,您将使用侦听器。例如:

<?xml version="1.0" encoding="UTF-8"?>
<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"
          height="600"
          width="600"
          title="My Component"
          xtype="dialog">
    <listeners
        jcr:primaryType="nt:unstructured"
        beforesubmit="function(dialog){ return myNamespace.myCustomFunction(dialog); }"/>
    <items jcr:primaryType="cq:TabPanel">
        <items jcr:primaryType="cq:WidgetCollection">
        </items>
    </items>
</jcr:root>
JavaScript:

var myNamespace = myNamespace || {};

myNamespace.myCustomFunction(dialog){
  var multifields
      field,
      max,
      min,
      length,
      x;

  multifields = dialog.findByType('multifield');

  for (x = 0; x < multifields.length; x++) {

    field = multifields[x];
    max = parseInt(field.maxLimit, 10);
    min = parseInt(field.minLimit, 10);
    length = field.getValue().length;

    if (max && length > max) {
      CQ.Ext.Msg.show({
        title: 'Validation Error',
        msg: field.fieldLabel + ' must have no more than ' + max + ' items.',
        buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR});
      return false;
    } else if (min && length < min) {
      CQ.Ext.Msg.show({
        title: 'Validation Error',
        msg: field.fieldLabel + ' must have at least ' + min + ' items.',
        buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR});
      return false;
    }
  }
}
var myNamespace=myNamespace | |{};
myNamespace.myCustomFunction(对话框){
var多场
领域
最大值,
闵,
长度,
x;
multifields=dialog.findByType('multifield');
对于(x=0;x最大){
CQ.Ext.Msg.show({
标题:“验证错误”,
msg:field.fieldLabel+'的项目数不得超过'+max+',
按钮:CQ.Ext.MessageBox.OK,图标:CQ.Ext.MessageBox.ERROR});
返回false;
}否则如果(最小值和长度<最小值){
CQ.Ext.Msg.show({
标题:“验证错误”,
msg:field.fieldLabel+'必须至少有'+min+'项。“,
按钮:CQ.Ext.MessageBox.OK,图标:CQ.Ext.MessageBox.ERROR});
返回false;
}
}
}
您看到了吗?或
<quiz-data
    jcr:primaryType="cq:Widget"
    fieldDescription="Click the '+' to add a new data"
    fieldLabel="Quiz"
    name="./quizData"
    minLimit="2"
    maxLimit="4"
    xtype="multifield">
    <fieldConfig
        jcr:primaryType="cq:Widget"
        xtype="textfield"/>
</quiz-data>
var myNamespace = myNamespace || {};

myNamespace.myCustomFunction(dialog){
  var multifields
      field,
      max,
      min,
      length,
      x;

  multifields = dialog.findByType('multifield');

  for (x = 0; x < multifields.length; x++) {

    field = multifields[x];
    max = parseInt(field.maxLimit, 10);
    min = parseInt(field.minLimit, 10);
    length = field.getValue().length;

    if (max && length > max) {
      CQ.Ext.Msg.show({
        title: 'Validation Error',
        msg: field.fieldLabel + ' must have no more than ' + max + ' items.',
        buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR});
      return false;
    } else if (min && length < min) {
      CQ.Ext.Msg.show({
        title: 'Validation Error',
        msg: field.fieldLabel + ' must have at least ' + min + ' items.',
        buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR});
      return false;
    }
  }
}