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>