【问题标题】:Submit form values are different from values I put into提交表单值与我输入的值不同
【发布时间】:2014-12-18 00:07:43
【问题描述】:

我在 json 中收到以下值:

Alarm: "1"
Categories: ["P"]
Users: ["Alexander","Moritz"]

并将它们加载到一个表单中:

form.load({
    method:"GET",
    url:'GetSimpleProtocol.json'
})

表单域是:

{
    type:'checkbox',
    name:'Alarm',
    boxLabel: 'Alarmieren',
    inputValue: '1'
},{
    xtype: 'combobox',
    fieldLabel: 'Kategorie',
    name: 'Categories',
    store:['P'],
    multiSelect: true,
},{
    xtype: 'textareafield',
    fieldLabel: 'Label',
    name: 'Users'
}

当我直接提交时:

form.submit({
    url:'SaveSimpleProtocol.json'
})

提交 POST 中的字段值已与第一个文件中的相反:

Alarm: true
Categories: [{field1:"P"}]
Users: "Alexander,Moritz"

我可以告诉我的组件或表单在提交之前将这些值更改回所需的格式吗?

【问题讨论】:

    标签: javascript forms extjs


    【解决方案1】:

    ComboBox 提交值是由代码问题引起的(仅在将值加载到表单中之后,组合框才填充了选择项。如果您在此之前执行此操作,它就像一个魅力一样)

    另外两个,我通过派生新组件解决了。

    ExtJS TextArea 接受并提交一个行数组:

    Ext.define('MyApp.ux.ArrayTextArea', {
        extend:'Ext.form.field.TextArea',
        alias: ['widget.arraytextareafield'],
        valueToRaw:function(value) {
            if(Ext.isArray(value)) return value.join("\n");
            return this.callParent([value]);
        },
        rawToValue:function(value) {
            if(Ext.isString(value)) {
                if(value.length==0) return [];
                return value.split("\n");
            }
            return this.callParent([value]);
        }
    });
    

    返回 inputValue/uncheckedValue 而不是 true/false 的 ExtJS 复选框:

    Ext.define('TimeFleX.ux.StringCheckbox', {
        extend:'Ext.form.field.Checkbox',
        alias: ['widget.stringcheckbox'],
        getValue:function() {
            if(this.checked) return this.inputValue;
            return this.uncheckedValue;
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多