我用Day CQ5开发网站并遇到了问题。 我正在创建一个组件,以及它的对话。我在对话框中使用组件元素“multifield”,其中包含几个元素“pathfield”。如何设置特定数量的元素“pathfield”并删除按钮“+”和“ - ”?
答案 0 :(得分:5)
本周我遇到了这个确切的问题:)
默认情况下,您似乎无法限制编辑器可以输入的项目数。为解决此问题,我创建了位于
的Multifield.js的叠加层/apps/cq/ui/widgets/source/widgets/form/MultiField.js
我在多字段下的fieldConfig节点上添加了对'limit'属性集的检查。如果存在&不为零,它将使用它作为用户可以添加的最大字段数。
不希望通过发布完整叠加层来解决版权问题,但我所做的更改如下:
在构造函数(第53行)中,添加一个检查以从fieldConfig节点获取limit的值:
if (!config.fieldConfig.limit) {
config.fieldConfig.limit = "0";
}
在“+”按钮的处理程序(第71行)中,将功能更改为:
if(config.fieldConfig.limit == 0 || list.items.getCount() <= config.fieldConfig.limit) {
list.addItem();
} else {
CQ.Ext.Msg.show({
title: 'Limit reached',
msg: 'You are only allowed to add ' + config.fieldConfig.limit +
' items to this module',
icon:CQ.Ext.MessageBox.WARNING,
buttons: CQ.Ext.Msg.OK
});
}
我没有删除按钮,而是创建了一个弹出窗口,通知编辑器'N是允许的最大字段数'。
简单的改变,但做的工作!希望这是有用的。
答案 1 :(得分:2)
您还可以将侦听器并行添加到多字段节点。例如
活动:beforeadd
功能:
function(list,component,index) {
if(this.fieldConfig.limit!=0) {
if(this.fieldConfig.limit == (list.items.getCount()-1)) {
CQ.Ext.Msg.show(
{title: 'Limit reached', msg: 'You are only allowed to add '+this.fieldConfig.limit+' items to this module',icon:CQ.Ext.MessageBox.WARNING,buttons: CQ.Ext.Msg.OK}
);;return false;
}
}
}
先决条件:将限制值添加到multifield的fieldConfig。
答案 2 :(得分:0)
我还没有找到解决这个问题的标准解决方案,但是提出了一个小技巧。首先,我通过组件对话添加所需数量的子元素。然后我将属性“class”添加到元素“multifield”,例如“sliderpanel-dialog-multifield”。然后我添加组件CSS样式这样的构造:
.sliderpanel-dialog-multifield .x-btn{
display: none;
}
“。x-btn”是使用CQ5中的按钮的类。之后,按钮将被隐藏,您无法在多字段中添加或删除元素。我有另一个建议,这个问题可以在听众和脚本的帮助下解决,但我将在上面引用它将更难解决。到目前为止,我一直关注这个变种,但如果你有其他想法,我会非常有兴趣了解它们。
答案 3 :(得分:0)
beforeadd解决方案似乎存在问题:表单/对话框变为无效状态,告诉我们更正标记的字段......但一切都正确。
有没有办法重新初始化表单验证?
答案 4 :(得分:0)
在达到限制后,通过删除“添加项目”按钮,参阅此帖子,我已实现了该功能。
http://letsaem.blogspot.in/2015/12/add-limit-to-number-of-elements-in.html
然而,实施过程是:
removeditem:
function(list) {
var length = list.items.length;
if (length <= list.fieldConfig.limit) {
list.items.items[length - 1].show();
}
}
beforeadd:
function(list, component, index) {
var length = list.items.length;
var addButton = list.items.items[length - 1];
if (length == list.fieldConfig.limit) {
addButton.hide();
}
}
现在,如果你给出限制:3
添加项目按钮将在添加3项
后消失添加项目按钮消失: