`

extjs 图片上传预览表单组件

阅读更多

项目中需要在表单中使用图片上传且预览组件,网上搜了下解决方案,实在是没什么可参考,于是自己动手写了个,效果如下:

使用如下:

{
					fieldLabel : "头像",
					xtype : "imagefield",
					value : "images/example/default_pic.png2",
					btnCfg : {
						text : "上传",
						scope : this,
						handler : function(a,d){
							alert(a.getValue())
							a.setValue("images/example/default_pic.png")
						}
					}
				}

 实现代码:

/**
 * 图片框 Ext.form.ImageField
 * @cfg btnCfg 配置形如 {
			text : "click",
			handler :function(imageFiled){
			
			},
			scope : this
		}} 
	@cfg	imgCfg : {
			cls : "",
			style : "margin: 0px 0px 1px; border: 1px solid rgb(204, 204, 204);  width: 100; height: 100px;"
		
*/	
Ext.form.ImageField = Ext.extend(Ext.form.DisplayField,{
	initComponent : function(){
		this.initContents();
		Ext.form.ImageField.superclass.initComponent.call(this);
	},
	//private
	initContents : function(){
		this.btnId = Ext.id();
		this.imgId = Ext.id()
		this.btnCfg  = Ext.applyIf(this.btnCfg||{},{
			text : "click",
			handler :Ext.emptyFn,
			scope : this
		})
		this.imgCfg  = Ext.applyIf(this.btnCfg||{},{
			cls : "",
			style : "margin: 0px 0px 1px; border: 1px solid rgb(204, 204, 204);  width: 100; height: 100px;"
		})
		this.html =  '<img  id="'+this.imgId+'" style="'+this.imgCfg.style+'" src="'+(this.value||Ext.BLANK_IMAGE_URL)+'" >' +
		'<br> <input  size="20" type="button" ' +'value="'+this.btnCfg.text+'"  id="'+this.btnId+'">';
	},
	//override
	afterRender : function(){
		Ext.form.ImageField.superclass.afterRender.call(this);
		this.addBtnClickEvent.defer(100,this);
	},
	//private
	addBtnClickEvent : function(){
		Ext.fly(this.btnId).on("click",this.btnCfg.handler.createDelegate(this.btnCfg.scope,[this]));
		
	},
	//override
	initValue : Ext.emptyFn,
	//override
 	getRawValue : function(){
	       var imgEl =  Ext.fly(this.imgId);
	       if(imgEl){
	    	   return imgEl.getAttribute("src");
	       }
        return "";
    },
    //override
    setRawValue : function(v){
        var imgEl =  Ext.fly(this.imgId);
	       if(imgEl){
	    	   imgEl.dom.setAttribute("src",v);
	       }
        return true;
    },
	destroy : function(){
        if(!this.isDestroyed){
        	Ext.fly(this.btnId).removeAllListeners () ;
        }
        Ext.form.ImageField.superclass.destroy.call(this);
    }
})
Ext.reg('imagefield', Ext.form.ImageField);

 

  • 大小: 9.7 KB
分享到:
评论

相关推荐

    EXtjs 图片批量上传

    首先,批量上传图片的核心是利用HTML5的File API,它允许用户在不离开当前页面的情况下读取、处理和上传本地文件。在ExtJS中,我们可以创建一个`Ext.form.Panel`,并在其中包含一个`Ext.form.FileField`组件,该组件...

    Extjs图片上传 带过滤和缩略图

    为了展示上传图片的缩略图,你可以利用HTML5的`FileReader` API读取文件内容,然后创建一个临时的图片元素来显示。在文件选择后,通过监听`change`事件,读取文件内容,转换成Base64编码,然后插入到页面的缩略图...

    extjs图片上传

    本文将深入探讨如何使用EXTJS来实现图片上传,包括多图预览、上传以及删除功能,并结合给定的文件名,分析基于JSP的后端处理。 EXTJS是Sencha公司推出的一款JavaScript库,主要用于构建桌面级的Web应用程序。它提供...

    ExtJS带进度条的多文件上传和图片预览

    在这个项目中,我们可能使用了`Ext.form.Panel`来创建表单,`Ext.ProgressBar`来显示文件上传进度,以及`Ext.window.Window`来弹出图片预览窗口。 2. **多文件上传**:多文件上传功能允许用户一次选择并上传多个...

    Extjs绚丽上传组件

    1. **组件配置**:介绍如何在表单中添加上传字段,如设置`inputType: 'file'`,并配置按钮文本、接受的文件类型等属性。 2. **事件监听**:讲解如何监听`change`事件,当用户选择文件后触发处理函数,获取文件信息,...

    ExtJs4.0整合Swfupload上传组件

    ExtJs4.0整合Swfupload上传组件是一个常见的前端开发任务,主要涉及到两个技术:Ext Js和Swfupload。这两个工具结合使用,可以为Web应用提供功能强大的文件上传功能,尤其是对于大文件或者多文件上传场景,它们提供...

    ExtJs文件上传组件(UploadDialog)

    在ExtJS中,UploadDialog是一个专为文件上传设计的组件,它提供了用户友好的界面,允许用户选择并上传多个文件到服务器。这篇博客文章(虽然链接无法直接访问,但我们可以根据已知信息推测内容)可能详细介绍了如何...

    ExtJs4 多附件上传组件

    首先,SWFUpload是一个开源的Flash上传组件,它支持多文件选择、预览、进度条显示等功能,弥补了HTML上传表单的局限性。在ExtJS4中集成SWFUpload,可以借助其强大的特性,提供更丰富的上传体验。 步骤1:引入必要的...

    extjs 上传图片(可以上传其他类型的文件)asp 实现

    在本文中,我们将深入探讨如何使用ExtJS框架与ASP(Active Server Pages)技术结合,实现一个功能完善的文件上传功能,特别是针对图片和其他类型文件的上传。ExtJS是一款强大的JavaScript库,用于构建桌面级的Web...

    ExtJS文件上传示例

    在Web应用中,文件上传是常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。ExtJS 提供了内置的组件和API来处理这种场景。主要涉及的知识点有: 1. **FileInput组件**:这是ExtJS中用于文件选择的组件...

    extjs 4.1 beta 预览版

    EXTJS的核心是其组件化的架构,提供了一系列可复用的UI组件,包括表格、面板、表单、菜单、工具栏等,使得开发者能够快速创建功能丰富的交互式界面。EXTJS 4.1是对4.0版本的重大升级,它带来了显著的性能提升和众多...

    extjs 多文件上传

    一、ExtJS 文件上传组件 在ExtJS中,我们可以使用`Ext.form.FileField`(又称FileInputField)来创建一个文件选择器,用于用户选择待上传的文件。这个组件提供了基本的文件选择功能,但并不包括实际的上传逻辑。因此...

    extjs+servlet实现图片上传

    在实际应用中,可能还需要考虑更多细节,比如进度条显示、多文件上传、图片预览等功能,这需要更复杂的前端交互和后端逻辑。总的来说,理解和掌握这些技术将帮助你构建更强大、更安全的Web应用。

    extjs 多文件上传控件

    ExtJS 是一个强大的...综上所述,实现ExtJS多文件上传控件涉及到前端的文件选择、表单提交、进度显示,以及后端的文件接收和处理等多个环节。通过熟练掌握这些知识点,你可以创建出高效且用户友好的文件上传功能。

    Extjs多文件上传

    首先,ExtJS的文件上传功能通常依赖于其组件系统,特别是`Ext.form.FileField`(也称为`Ext.form.upload.File`),这是一个用于选择文件的输入字段。在多文件上传场景中,我们需要扩展这个组件以允许用户选择多个...

    extjs批量上传的所有相关代码和jar,支持包和笔记

    7. **批量上传组件**: 如果EXTJS本身没有内置批量上传解决方案,开发者可能会选择第三方组件,如`EXTJS Uploader`或`EXTJS Grid with FileUploadField`,它们提供了更丰富的上传功能,比如预览、取消上传、多线程...

    ext_image.rar_ext_image_extjs_extjs 4.2 img_extjs image_extjs图片上

    图片上传功能通常借助于ExtJS的表单组件(`Ext.form.Panel`)和上传字段(`Ext.form.field.File`)。在ExtJS 4.2中,上传组件可能需要配合第三方插件,如SWFUpload或jQuery File Upload,以实现浏览器兼容性和异步...

    解决Extjs上传图片无法预览的解决方法

    在EXTJS中,上传图片并实现预览功能可能会遇到一些挑战,特别是在处理浏览器的兼容性问题时。这里我们将深入探讨如何解决EXTJS上传图片无法预览的问题,以及如何优化代码以适应不同浏览器。 首先,我们需要了解...

    Extjs上传组件

    ExtJS的上传组件就为此目的而设计,它提供了一个用户友好的界面,支持批量上传、进度条显示等功能。 在ExtJS中,上传组件通常基于`Ext.form.FileField`或`Ext.form.Basic`来创建。`Ext.form.FileField`(旧版本中...

Global site tag (gtag.js) - Google Analytics