ExtJs 图片上传

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

你可能感兴趣的:(java,工作)