问题描述
<input type="file" id="attachfile1" name="attachfile1" /> <input type="button" id="upload1" name="upload1" onclick="selectFile()" value="..."/> js: function selectFile(){ $('#attachfile1').click(); } 如上所示: 有一个file 和 一个button 用 ajaxFileUpload上传文件, 第一种情况:用file选择文件,再调用ajaxFileUpload,可以上传到后台; 第二种情况:用按下button,触发file的click事件,选择文件,再调用ajaxFileUpload,后台无反应,我把input的name="attachfile1"属性去掉,能进到后台的上传方法,但是因为没有name属性,那些文件名都是空 为什么呢? 谢谢!!!!
解决方案
出于安全问题,不允许你用script去给文件框执行click事件。有的浏览器根本不会触发事件(根本不会弹出文件选择框),有的浏览器可以触发事件,但是文件不会被上传。估计你是想把按钮给做成自己想要的效果,那么可以换个思路。比如把文件框给变成透明的,然后在它的文件选择按钮的下面,布置一个你自己效果的按钮。因为它是透明的,所以用户看到的是你自己效果的按钮,当用户点击你自己效果按钮的时候,实际上是点击到了透明的文件选择按钮,这样就和你第一个测试是一个效果了。
解决方案二:
这样试试<form><input type="file" id="attachfile1" name="attachfile1" /> </form><input type="button" id="upload1" name="upload1" onclick="attachfile1.click();" value="..."/>