上傳控件:
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默認的屬性將inputType設為file時,始終響應不了onchange事件,結果就以autoCreate的方式,如下,因為這種方式相當于html里的input,所以也就響應得了啦!
autoCreate : {
tag : "input",
type : "file",
size : "20",
autocomplete : "off",
onChange : "browseImages(this.value);"
}
}]
,
buttons : [{
text : '上傳',
handler : function() {
panel3.getForm().submit({
// waitTitle : "請稍候",
waitMsg : "正在上傳
",
success : function(form, action){},
failure : function(form, action) {
Global.alert('上傳圖片失敗!');
}
})
}
}]
});
/*
* 編輯
* @date 2008 July 10
*/
經過實踐,還存在一種可以激發change事件的方法;
首先說一下獲取form里面的field的三種方法:
1)Ext.getCmp('id');
2)FormPanel.getForm().findField('id/name');
3)Ext.get('id/name'); //前提是FormPanel在界面上顯示出來了
應用上面的第1和第2種方法得到的組件均觸發不了change事件,只有第三種方法可以
觸發,前提是FormPanel要在界面上顯示出來,所以需要觸發show事件,然后在show
事件里調用Ext.get('id/name'),由于FormPanel經常是放在Ext.Window里的,所
以新的問題又來了:
1)調用FormPanel.on('show',fn);//當Window顯示出來的時候,事件沒有觸發
2)調用FormPanel.getForm().on('show',fn);//情況同上
3)調用FormPanel.ownerCt.on('show',fn);//OK 一切搞定
其中scope也是需要注意的一項!
如果再不行的話,可以先調用:
FormPanel.ownerCt.on('render',function(){
FormPanel.ownerCt.on('show',fn,this);
},this);
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默認的屬性將inputType設為file時,始終響應不了onchange事件,結果就以autoCreate的方式,如下,因為這種方式相當于html里的input,所以也就響應得了啦!
autoCreate : {
tag : "input",
type : "file",
size : "20",
autocomplete : "off",
onChange : "browseImages(this.value);"
}
}]
,
buttons : [{
text : '上傳',
handler : function() {
panel3.getForm().submit({
// waitTitle : "請稍候",
waitMsg : "正在上傳

success : function(form, action){},
failure : function(form, action) {
Global.alert('上傳圖片失敗!');
}
})
}
}]
});
/*
* 編輯
* @date 2008 July 10
*/
經過實踐,還存在一種可以激發change事件的方法;
首先說一下獲取form里面的field的三種方法:
1)Ext.getCmp('id');
2)FormPanel.getForm().findField('id/name');
3)Ext.get('id/name'); //前提是FormPanel在界面上顯示出來了
應用上面的第1和第2種方法得到的組件均觸發不了change事件,只有第三種方法可以
觸發,前提是FormPanel要在界面上顯示出來,所以需要觸發show事件,然后在show
事件里調用Ext.get('id/name'),由于FormPanel經常是放在Ext.Window里的,所
以新的問題又來了:
1)調用FormPanel.on('show',fn);//當Window顯示出來的時候,事件沒有觸發
2)調用FormPanel.getForm().on('show',fn);//情況同上
3)調用FormPanel.ownerCt.on('show',fn);//OK 一切搞定
其中scope也是需要注意的一項!
如果再不行的話,可以先調用:
FormPanel.ownerCt.on('render',function(){
FormPanel.ownerCt.on('show',fn,this);
},this);