Javascript Tagfield select e deselect:如何添加和删除要形成的Dinammaly fieldcontainers
我需要通过标记字段(multiselect)以大的形式更改combox(单选) 发出请求,以便每个标记字段项(车辆列表)可以与字段关联,以输入每个车辆的值 解决此问题的最佳解决方案是什么? 一个可能的解决办法是,它在下面的小提琴中得到了举例说明 每当用户选择标记字段项目时,带有两个文本字段的fieldecontainer将动态添加到fom中:第一个字段与所选标记字段项目具有相同的名称,第二个字段用于car值 我要解决的第一个问题是:当取消选择标记字段列表项时,删除相应的fieldcontainer 第二个问题是收集每个fieldcontainer的值(汽车名称和各自的价格值),并将它们一起发送到服务器端Javascript Tagfield select e deselect:如何添加和删除要形成的Dinammaly fieldcontainers,javascript,forms,extjs,extjs5,Javascript,Forms,Extjs,Extjs5,我需要通过标记字段(multiselect)以大的形式更改combox(单选) 发出请求,以便每个标记字段项(车辆列表)可以与字段关联,以输入每个车辆的值 解决此问题的最佳解决方案是什么? 一个可能的解决办法是,它在下面的小提琴中得到了举例说明 每当用户选择标记字段项目时,带有两个文本字段的fieldecontainer将动态添加到fom中:第一个字段与所选标记字段项目具有相同的名称,第二个字段用于car值 我要解决的第一个问题是:当取消选择标记字段列表项时,删除相应的fieldcontaine
FIDDLE:我只需在添加字段容器时将其分配给哈希或其他内容,然后根据需要将其隐藏
beforeselect: function (combo, record, eOpts) {
var valueTagItem = record.get('name', this);
if (!Ext.isDefined(this.carFields)) {
this.carFields = {};
}
if (!Ext.isDefined(this.carFields[valueTagItem])) {
this.carFields[valueTagItem] = this.up('form').add({
xtype: 'fieldcontainer',
padding: '7 0 7 0',
defaults: {
hideLabel: true,
},
layout: {
type: 'hbox',
align: 'strech'
},
items: [{
xtype: 'textfield',
name: 'text',
value: valueTagItem,
editable: false,
padding: '0 3 5 0',
flex: 1
}, {
xtype: 'textfield',
name: 'value',
emptyText: 'car value',
submitEmptyText: false,
allowBlank: false,
minWidth: 100,
flex: 0.5
}]
});
}
this.carFields[valueTagItem].show();
},
beforedeselect: function (combo, record, index, eOpts) {
var valueTagItemdeselect = record.get('name', this);
this.carFields[valueTagItemdeselect].hide();
}
要将所有值发送到服务器,只需执行this.up('form').getForm().submit()或其他操作 谢谢,泽克。它运行良好(这是一个非常有趣的解决方案)。发送到服务器的问题是,我需要将每个fieldcontainer的值一起发送(汽车+该汽车的价格)。如果您使用递增索引或其他方式使字段名称唯一,则可以通过表单的常规提交功能来发送。因此,您的第一组文本字段是“text1”和“value1”,下一组是“text2”和“value2”,等等。或者您可以通过自定义AJAX请求提交,您可以使用form.getValues()并从中构建该请求的参数。