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

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

【问题讨论】:

    标签: extjs combobox


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2011-05-10
    • 2012-04-19
    • 2012-06-15
    相关资源
    最近更新 更多