上传控件:
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);