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事件异步带来的问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值