ExtJS:如何同时提交:组合框值和文本

Posted

技术标签:

【中文标题】ExtJS:如何同时提交:组合框值和文本【英文标题】:ExtJS: How to submit both: combobox value and text 【发布时间】:2011-03-24 17:32:36 【问题描述】:

ExtJS:如何同时提交:组合框值和使用标准提交的文本?

【问题讨论】:

【参考方案1】:

要提交 valueField,您必须指定 hiddenName 以创建隐藏输入字段来保存 valueField 的值。您还必须将 submitValue 设置为 true

例如

var unitField = new Ext.form.ComboBox(
    id:'unitField',
    name: 'unit',
    submitValue : true,
    fieldLabel: 'Unit',
    store:unitStore,
    mode: 'remote',
    displayField: 'name',
    valueField: 'id',
    hiddenName : 'unitId',
    allowBlank: false,
    anchor:'95%',
    triggerAction: 'all'
);

所以你得到作为 unitId 发送的值和作为单位发送的文本

【讨论】:

由于某种原因,我没有在字段集合中获得单位!? UnitId 没问题。 如果我注释掉 hiddenName : 'unitId',那么我会得到 'unit' 字段,但当然没有 'unitId'。 您还需要在配置选项中添加 submitValue: true 。我已经更新了答案。 From Docs - submitValue : Boolean False 清除字段上的 name 属性,以便在表单发布期间不提交。如果指定了 hiddenName,将其设置为 true 将导致隐藏字段和元素都被提交。 这对 EXTJS 5 有效吗?它对我不起作用,但在文档中仍然可用。这还存在吗?【参考方案2】:

如果您想提交两个值,则需要两个字段。如果您希望两个字段都由一个字段控制,您应该隐藏一个字段,并在第一个字段更新时更新它:

var hiddenField = new Ext.form.Hidden(
    name: 'comboDisplay'
);

var combo = new Ext.form.ComboBox(
    xtype: 'combo',
    // ...
    listeners: 
        select: function(combo, record) 
            hiddenField.setValue(record.data['display']);
        
    
);

【讨论】:

你的方法是正确的。但这还不是完整的答案。请注意,如果要在米兰在他的问题中提到的标准提交上提交 valueField,您还需要一个 hiddenName。

以上是关于ExtJS:如何同时提交:组合框值和文本的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 添加唯一的组合框值来存储

Extjs:如何从控制器设置额外参数以在商店中用于填充组合框值。想要将额外参数值设置为 abc.1-cond1、abc.2-con2

ExtJS 5 组合框 - 提交值和文本

基于 extjs 网格中的另一个组合框填充字段

ExtJS 组合框未在面板中加载

Ext JS 组合框值在模糊后重置为错误值