上傳控件:
var panel3 = new Ext.form.FormPanel({ labelAlign : 'left', labelWidth:60, border : false, bodyStyle : 'padding:4px;', frame : false, url : '../ajaxdata/uploadFile.jsp', autoHeight : true, fileUpload : true, items : [{ id : 'file', autoScroll : false, xtype : 'textfield' fieldLabel:'本地上傳', name : 'file', hideLabel : true, // inputType : 'file'//按照Ext默認(rèn)的屬性將inputType設(shè)為file時(shí),始終響應(yīng)不了onchange事件,結(jié)果就以autoCreate的方式,如下,因?yàn)檫@種方式相當(dāng)于html里的input,所以也就響應(yīng)得了啦! autoCreate : { tag : "input", type : "file", size : "20", autocomplete : "off", onChange : "browseImages(this.value);" } }] , buttons : [{ text : '上傳', handler : function() { panel3.getForm().submit({ // waitTitle : "請(qǐng)稍候", waitMsg : "正在上傳 ![]() success : function(form, action){}, failure : function(form, action) { Global.alert('上傳圖片失??!'); } }) } }] }); /* * 編輯 * @date 2008 July 10 */ 經(jīng)過實(shí)踐,還存在一種可以激發(fā)change事件的方法; 首先說一下獲取form里面的field的三種方法: 1)Ext.getCmp('id'); 2)FormPanel.getForm().findField('id/name'); 3)Ext.get('id/name'); //前提是FormPanel在界面上顯示出來了 應(yīng)用上面的第1和第2種方法得到的組件均觸發(fā)不了change事件,只有第三種方法可以 觸發(fā),前提是FormPanel要在界面上顯示出來,所以需要觸發(fā)show事件,然后在show 事件里調(diào)用Ext.get('id/name'),由于FormPanel經(jīng)常是放在Ext.Window里的,所 以新的問題又來了: 1)調(diào)用FormPanel.on('show',fn);//當(dāng)Window顯示出來的時(shí)候,事件沒有觸發(fā) 2)調(diào)用FormPanel.getForm().on('show',fn);//情況同上 3)調(diào)用FormPanel.ownerCt.on('show',fn);//OK 一切搞定 其中scope也是需要注意的一項(xiàng)! 如果再不行的話,可以先調(diào)用: FormPanel.ownerCt.on('render',function(){ FormPanel.ownerCt.on('show',fn,this); },this); |
|