提交表单值与我输入的值不同

时间:2014-12-11 10:57:38

标签: javascript forms extjs

我在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"

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

1 个答案:

答案 0 :(得分:0)

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]);
    }
});

ExtJS Checkbox返回inputValue / uncheckedValue而不是true / false:

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