js点击某个图标或按钮弹出文件选择框

最近项目需求,不显示一个传统的文件选择,实现一个js点击某个图标或按钮,弹出文件选择框,选择完图片后,回显选择的图片。但是编写的过程中,出现不少问题,我总结一下。

废话不说了,上代码再说问题。

<HTML>
	<head>
		<script type="text/javascript" src="script/jquery-1.6.2.min.js"></script>
		<script type='text/javascript'>
		    function selectFile(){
		    	//触发 文件选择的click事件
		    	$("#file").trigger("click");

			//其他code如 alert($("#file").attr("value"))
		    }
		    
		    /* 获取 文件的路径 ,用于测试*/
		    function getFilePath(){
		    	alert($("#file").attr("value"));
		    }
		</script>
	</head>
	<body>
		<!-- 给这个input 设置样式隐藏,切忌不可用display控制隐藏,可能不能跨浏览器 -->
		<input type="file" id="file" οnchange="getFilePath()" 
			style="filter:alpha(opacity=0);opacity:0;width: 0;height: 0;"/> 
		<button οnclick="selectFile();">select file</button>
		<button οnclick="getFilePath()">get FilePath</button>
	</body>
</html>

$("#file").trigger("click"); 触发<input type="file" id="file" />的click事件, 在ie下trigger事件和其他代码是同步执行的,但是在谷歌和火狐是异步执行的,//其他code如 alert($("#file").attr("value")) 是得不到的。为了让其他浏览器兼容,其实选择完文件后触发的是 file 的 οnchange="getFilePath()" ,你就可以在选择完文件后做你自己的业务处理。
说白了,都是trigger事件异步带来的问题。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
lhgdialog是一功能强大的简单迷你并且高效的弹出窗口组件,基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。 版本(2011-07-04 发布): V3.5.2 窗口lhgdialog.min.js文件的url参数(3.4.0新增) 参数形式为:[removed][removed] t:指定弹出窗口的页面(替代原来的第22个参数SetTopWindow)参数值:self,在当前页面弹出窗口。此参数只用在架页面中,如果不写此参数则窗口跨弹出架最顶层页面,如果值为self则不跨架,而在当前面页弹出。 s:窗口使用的皮肤的名称(3.5.0修改)参数值:默认default,不写此参数则值为default。如果你想在同一页面使用不同皮肤的窗口,就要把你要使用的皮肤的名称都写上,中间用","隔开,例如:lhgdialog.min.js?s=default,chrome,此参数用来动态给窗口换肤,参数的值为skins文件夹下各皮肤文件夹的名,具体使用方法请参阅皮肤制作 url参数不需要设定的就可以不写,不写时就使用默认值。 初始化参数列表 初始化参数列表:即为J.dialog({ 这里的参数 }); skin:指定窗口的皮肤(3.5.0新增)参数值:默认为“default”。 args:传递的参数(3.5.0新增)参数值:值可为任意类型的数据。 onCancel:自定义窗口关闭函数(3.5.0修改)参数值:如果加了此参数则可以调用此函数来关闭窗口。3.5.0将此属性改为此函数参数的作用是在关闭窗口前执行这个函数来完成一定动作。 cancelBtnTxt:设置取消按钮的文本(3.4.2新增)参数值:默认为“取消”。此参数和onCancel配合使用即可改变取消按钮为其它作用的按钮。 autoPos:当浏览器大小改变时窗口的位置是否自动改变(3.4.2新增)参数值:默认为false,如果想让窗口自动改变为设要设值,值为一个对象,对象中有2个属性,分别为left和top,left和top的值与窗口参数left和top的值是一样的。例如:autoPos:{left:'center',top:'center'}。 autoCloseFn:自动关闭窗口时执行的函数(3.4.2新增)参数值:当指定了timer属性后,此参数为窗口关闭前执行的函数。 bgcolor:设置遮罩层的颜色(3.4.1新增)参数值:默认为白色(#fff)。 opacity:设置遮罩层的透明度(3.4.1新增)参数值:默认为0.5(也就是50%的透明度),值为小于1的一位小数。 onMinSize:最小化按钮调用的函数(3.4.1新增)参数值:此属性为一个函数,就是单击最小化按钮调用的函数,主要是为用户提供个接口,这里你可以自己写这个函数。 maxBtn:是否显示最大化按钮(3.4.0新增)参数值:默认true(显示,如果titleBar参数为false,此参数无效),false(不显示)。注:如果fixed参数为true,那么此参数就自动为false。 minBtn:是否显示最小化按钮(3.4.0新增)参数值:默认true(显示,如果titleBar参数为false,此参数无效),false(不显示)。最小化按钮功能暂无 timer:定时关闭窗口时间,单位为秒(3.4.0新增)参数值:无,不带单位的数字,单位为秒。 id:窗口的id号参数值:默认lhgdlgId,自定义对话ID属性,要保证在页面中是唯一的,不能和页面中任何元素的id相同。 注意:如果页面中只有一个弹出窗口此参数可以不写,但页面中如果有1个以上的弹出窗口则一定要加此参数。 title:窗口的标题文本参数值:默认lhgdialog弹出窗口,窗口标题的文件字符。 width:窗口的宽度参数值:默认400,不带单位的数字。 height:窗口的高度参数值:默认300,不带单位的数字。 titleBar:是否显示标题栏参数值:默认true(显示),false(不显示,注意如果不显示一定要选择相应的皮肤,无标题栏的皮肤)。 iconTitle:是否显示标题栏左边小图标参数值:默认true(显示,如果titleBar参数为false,此参数无效),false(不显示)。 xButton:是否显示窗口右上角的X关闭按钮参数值:默认true(显示,如果titleBar参数为false,此参数无效),false(不显示)。 btnBar:是否显示按钮栏参数值:默认true(显示),false(不显示)。 cancelBtn:是否显示取消按钮参数值:默认true(显示,要显示的同时必须设btnBar参数为true),false(不显示)。 page:窗口内容页的地址参数值:窗口的内容页为一个单独的页面文件,这个文件的路径是内容页面文件相对于调用窗口插件的路径或也可使用绝对路径,如果此参数的值为不同域的外部链接,那一定要使下面的link参数为真。 link:是否为外部链接参数值:默认false(不是外部链接),true(是外部链接,这里的外部链接指的是不同域的网址)。 html:窗口的内容为HTML代码参数值:可以是HTML代码或DOM对象。 fixed:是否开启静止定位参数值:默认false(不开启),true(开启,静止定位指的就是窗口随屏滚动)。 left:X轴的坐标参数值:默认center(居中),left(屏幕的左边),right(屏幕的右边),如果开启了fixed则原点以浏览器视口为基准。 top:Y轴的坐标参数值:默认center(居中),top(屏幕的最上边),right(屏幕的最下面),如果开启了fixed则原点以浏览器视口为基准。 cover:是否开启锁屏参数值:默认false(不开启),true(开启,中断用户对话之外的交互,用于显示非常重要的操作/消息)。 drag:是否允许拖动对话参数值:默认true(允许),false(不允许)。 resize:是否允许拖动改变窗口大小参数值:默认true(允许),false(不允许)。 rang:是否限制窗口挪动范围参数值:默认false(不限制),true(限制,也就是不允许窗口拖出浏览器的可视区域)。 loadingText:窗口加载时的文本字符参数值:默认“窗口正在加载中,请稍等...”。 autoSize:是否窗口自适应大小参数值:默认false(不适应),true(自动适应窗口内容的大小)。 SetTopWindow:指定窗口要在弹出时的那个页面的window对象此参数已被新的url参数t所替代,3.4.0版本删除了此参数。 parent:子窗口的父窗口对象参数值:此参数只用在弹出的窗口中再弹出子窗口时指定父窗口对象,注意如果2层弹出窗口都有遮罩层则一定要加此参数。 dgOnLoad:窗口加载后执行的函数参数值:注意此参数值一定要为函数。 onXclick:窗口右上角X关闭按钮拦截函数参数值:如果加了此参数则窗口右上角X关闭按钮则执行此函数。 其中一些参数的用法请参照示例中的使用方法 API函数接口列表 API接口列表: setArgs(args) :设置要传递的数据(3.5.0新增)参数1:要传递的数据,可以为任意类型的数据。 getArgs() :获取传递的数据(3.5.0新增)参数1:无,可以为任意类型的数据。 addBtn(id,txt,fn,pos) :在窗口的按钮栏增加按钮(3.4.2新增pos参数)参数1:按钮的id 参数2:按钮上的文本 参数3:按钮绑定的函数 参数4:用来指定新增加按出现在已有按钮的左边(值为'left')还是右边(值为'right') SetCancelBtn(txt,fn) :重新设定取消按钮(3.4.2新增)参数1:按钮的文本。 参数2:按钮重新绑定的函数。 closeTime(second,fn) :定时关闭窗口(3.4.0新增,3.4.2修改)参数1:关闭窗口的时间,单位为秒。 参数2:关闭窗口前执行的函数。 SetPosition(top,left,fix) :重新指定窗口的位置(3.4.0新增,3.4.2修改) : SetPosition(left,top)参数1:X轴的坐标(详细见初始化参数里的第17个参数) 参数2:Y轴的坐标(详细见初始化参数里的第18个参数) 参数3:是否是静止定位(详细见初始化参数里的第16个参数,这里要注意如果fixed参数为true时这个参数一定要为true,否则就不要加此参数) 注:原来的第3个参数在3.4.2中已删除,这个参数程序会自动根据你调用窗口时的参数fixed的设置来判断。 maxSize() :窗口最大化函数接口(3.4.1新增)参数:无,你可以通调用此函数来控制窗口的最大化和还原。 SetMinBtn(fn) :重新设定最小化按钮函数(3.4.1新增)参数1:重新给最小化按钮绑定的函数,你可以通调用此函数重新给最小化按钮绑定函数。 iWin(id) :获取指定id的窗口内容页的window对象(3.4.1新增)参数1:指定窗口的id,此函数用来返回指定id的窗口的内容页的window对象,主要用在传值使用中。 iDoc(id) :获取指定id的窗口内容页的document对象(3.4.1新增)参数1:指定窗口的id,此函数用来返回指定id的窗口的内容页的document对象,主要用在传值使用中。 iDg(id) :获取指定id的窗口DOM对象(3.4.1新增)参数1:指定窗口的id,此函数用来返回指定id的窗口的DOM对象,主要用判断此窗口是否存在。 SetXbtn(fn,noShow) :重新设置X按钮动作(3.4.0新增)参数1:重新给X按钮绑定的函数 参数2:是否显示X按钮 SetTitle(txt) :重新指定标题的文本(3.4.0新增)参数1:重新指定的标题的文本内容。 ShowDialog() :显示窗口无参数,jQ调用方式不需要加此方法。 cancel() :关闭窗口无参数。 reDialogSize(width,height) :重新指定窗口的大小参数1:窗口的宽度,如:600,不带单位的数字 参数2:窗口的高度,如:500,不带单位的数字 removeBtn(id) :移除窗口中按钮栏的按钮参数1:按钮的id SetIndex() :设置窗口的层叠次序无参数 API属性接口列表: dialogId :窗口的id(3.5.0新增)获取窗口设置的id值,此id不是窗口真正的id,此id是你在调用窗口时设置的id的值。 parent :父窗口对象实例(3.5.0新增)此属性就是取的你设置的parent参数属性的值,即:J.dialog({ parent:dg }) 这里的parent的值。 dg :窗口的DOM对象可通过此对象对窗口和窗口内元素进行操作。 lhgDG :创建的窗口的实例对象此属性只用在page参数指定的内容页面中,它取的是创建此窗口的实例对象。 topWin :顶层页面的window对象此参数在3.4.1版本中删除了,要想得到顶层页面的window对象直接写top就行了。 topDoc :顶层页面的document对象此参数在3.4.1版本中删除了,要想得到顶层页面的document对象直接写top.document就行了。 curWin :窗口调用页面的window对象也就是加载lhgdialog.min.js的页面的window对象,如果不是在架中弹出它和topWin是相等的。 curDoc :窗口调用页面的document对象也就是加载lhgdialog.min.js的页面的document对象,如果不是在架中弹出它和topDoc是相等的。 dgWin :内容页的window对象如果参数为page,且link参数不为真,那这个就是内容页的window对象。 dgDoc :内容的document对象如果参数为page,且link参数不为真,那这个就是内容页的document对象。 若希望lhgdialog开发团队为您定制特殊的功能、皮肤和插件,请参阅我们提供的捐赠页面。 此版本API和lhgdialog API 一致。 更多内容请看官方网站: http://bbs.lhgcore.com/thread-2-1-1.html http://bbs.lhgcore.com/thread-15-1-1.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值