gpt4 book ai didi

javascript - 在 CQ5 中设置自定义多字段元素的最小值和最大值?

转载 作者:行者123 更新时间:2023-11-30 11:56:14 24 4
gpt4 key购买 nike

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

我的对话节点:

<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>

小部件工作正常,除了我想设置所需的最小多字段和最大值。我在网上找到了一个例子,但我不太明白该怎么做,看看下面的代码:

myNamespace = {};
myNamespace.myCustomFunction = function (dialog) {
var isValid = function () {
var valStatus = true;
... custom JavaScript/jQuery to check if 3 items exist ...
return valStatus;
};
if (!isValid()) {
CQ.Ext.Msg.show({title: 'Validation Error', msg: 'Must contain at least 3 items!', buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR});
return false;
} else {
return true;
}
}

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

最佳答案

要在经典 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>

您可用的所有监听器都列在 CQ Widgets API documentation 中.例如,如果您查看 Dialog API您将看到所有公共(public)事件。

我无法评论您的自定义小部件,但是当这个 JavaScript 示例与上面的对话框监听器结合使用时,将使用 maxLimitminLimit< 的自定义属性验证您的所有多字段

对话框:

<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>

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;
}
}
}

关于javascript - 在 CQ5 中设置自定义多字段元素的最小值和最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com