form表單 獲取與賦值

form表單中使用頻繁的組件: 文本框、單選框、多選框、下拉框、文本域
form經過getValues()獲取表單中全部name的值 json

經過setValues({key:values})給對應的name值進行賦值,其中key對應的name值數組

 

在給單選框和多選框賦值時,有幾個疑惑的地方:
  1. fieldName和name 是否必須一致 ?ide

         (fieldName刪除對結果沒什麼影響,表單是經過name值去獲取值得) spa


    2. name與子項的name 也一致是爲什麼?
      (我的理解code

      經過getValues獲取值時是key:value,單選框和多選框子項有多個,獲取的value值時子項值的集合,而不能找到具體到對象orm

      此時要再進行一次key:value賦值,因此在代碼中賦值時就出現了,value.key = {key: value.key},
                 舉個例子:
                    var set_values = { radioName:0 };
                    此時set_values是單選框獲取的值,是一個結果,要將其賦值必須先找到單選框對象,而後在定位到單選框子對象
                    因此setValues(set_values) 其實單選框對象,而沒有具體到子對象,所以要再進行一次setValues
                    轉換的格式就是:
                        var set_new_values = {}
                        var set_new_values.radioName = {
                            radioName: set_values.radioName
                        }

                    form.setValues(set_new_values);  
                    此時就能夠定位到單選框子對象

     多選框和單選框的邏輯是一直,區別只是單選框值只有一個,而多選框值時一個數組
  )

對象

重複知識點: blog

    JSON.parse(jsonstr);      //能夠將json字符串轉換成json對象 事件

    JSON.stringify(jsonobj); //能夠將json對象轉換成json對符串 字符串

 

        Ext.onReady(function(){
                //Ext.Msg.alert("提示","hello world...")

                var ageStore = new Ext.data.Store({
                    fields: ['text', 'id'],
                    data: [{"id":18,"text":"18"},{"id":19,"text":"19"},{"id":20,"text":"20"},{"id":21,"text":"21"}],
                    autoLoad: true
                });

                //1.建立一個form表單
                var formpanel = Ext.create("Ext.form.Panel",{
                    title:"form表單獲取與賦值",
                    width:650,
                    height:250,
                    border:true,
                    renderTo:Ext.getBody(),
                    items:[
                        {
                            xtype:"textfield",
                            fieldLabel: "姓名",
                            width:200,
                            labelWidth:80,
                            name:"UserName"
                        }, {
                            xtype:"textfield",
                            fieldLabel: "手機號",
                            width:200,
                            labelWidth:80,
                            name:"Tel"
                        },{
                            xtype: "combo",
                            fieldLabel: "年齡", 
                            fieldName: "UserAge",
                            name: "UserAge",
                            labelWidth: 80,
                            allowBlank: false,
                            blankText: "年齡不能爲空",
                            autoFitErrors: true,
                            mode: 'local',
                            msgTarget: "side",
                            store: ageStore, 
                            displayField: "text",
                            valueField: "id"
                        }, {
                            xtype: "checkboxgroup",
                            fieldLabel: "上課時間",
                            labelWidth: 80,
                            width: 600,
                            name: "Weeks",
                            fieldName: "Weeks",
                            items: [{
                                boxLabel: "星期一",
                                name: "Weeks",
                                inputValue: 1,
                                checked: true
                            }, {
                                boxLabel: "星期二",
                                name: "Weeks",
                                inputValue: 2, 
                            }, {
                                boxLabel: "星期三",
                                name: "Weeks",
                                inputValue: 3, 
                            }, {
                                boxLabel: "星期四",
                                name: "Weeks",
                                inputValue: 4, 
                            }, {
                                boxLabel: "星期五",
                                name: "Weeks",
                                inputValue: 5, 
                            }, {
                                boxLabel: "星期六",
                                name: "Weeks",
                                inputValue: 6, 
                            }, {
                                boxLabel: "星期日",
                                name: "Weeks",
                                inputValue: 0, 
                            }]
                        }, {
                            xtype: "radiogroup",
                            width: 300,
                            labelWidth: 80,
                            fieldLabel: "上課/兼職",
                            fieldName: "RadioTimeSpanType",
                            name: "RadioTimeSpanType",
                            items: [
                                { boxLabel: "去上課", name: "RadioTimeSpanType", inputValue: 0, checked: true },
                                { boxLabel: "去兼職", name: "RadioTimeSpanType", inputValue: 1}
                            ], listeners: {
                                change: function(obj, newValue, oldValue, eOpts){
                                    // 單選事件   
                                }
                            }
                        }
                    ],
                    buttons:[
                        {
                            text:"保存",
                            handler:function(){
                                var values = formpanel.getForm().getValues();
                                // JSON.parse(jsonstr); //能夠將json字符串轉換成json對象
                                // JSON.stringify(jsonobj); //能夠將json對象轉換成json對符串 
                                document.getElementById("save_values").value = JSON.stringify(values);
                            }
                        }, {
                            text:"清空",
                            handler:function(){
                                formpanel.getForm().reset();
                            }
                        }, {
                            text:"自動填充",
                            handler:function(){
                                //獲取填充的值
                                var values = document.getElementById("save_values").value ;
                                if(values)
                                {
                                    //注意,獲取的值必須是json格式才能夠
                                    var json_values = JSON.parse(values); //能夠將json字符串轉換成json對象 
                                    //文本框和下拉框賦值就是key:value就能夠
                                    //單選框和複選框有點不同
                                    // 將key:value值轉成key:{key:value}類型
                                    json_values.Weeks = {
                                        Weeks: json_values.Weeks
                                    }

                                    json_values.RadioTimeSpanType = {
                                        RadioTimeSpanType: json_values.RadioTimeSpanType
                                    }
                                    //賦值
                                    formpanel.getForm().setValues(json_values);
                                }
                            }
                        } 
                    ]
                });
            });      //下面是body中顯示值的div        <div>            form的值:<br/>            <textarea id="save_values" style="width:700px; height: 100px;"> </textarea>        </div>
相關文章
相關標籤/搜索