前两天做一个东东,需要文件上传,但是呢,因为input--file控件不支持赋值功能,而且实在不怎么好看,就想用其他方法替代:将file控件隐藏,然后用一个按钮和input-text标签模拟file控件。在点击按钮的时候,触发隐藏的file标签的点击事件,然后,监听file控件的change事件,当选择了文件的时候,file控件的change事件触发,然后将file控件中的value值赋值给input-text。看似很完美的模拟,尼玛,IE不支持。说什么出于安全性考虑,用户一定要手动点击file控件才可以,不能通过事件传递的形式触发。不过确实也说得过去。然后,就因为这样,IE浏览器下报“拒绝访问”的异常。
然后退而求其次,将file控件设置短一点,可以直接选择文件,但是还是监听change事件,选择文件后将其中的value值赋值给前面的text文本域。下面的css来自网上,嘿嘿,我不太会写css。
.input-file {
display:inline-block;
width:66px;
height:26px;
line-height:22px;
background:#ddd;
text-align:center;
overflow:hidden;
position:relative;
}
<input type="text" value="${ detail.tableFilePath }" class="easyui-validatebox" data-options="required:true">
<input type="file" name="tableFilePathFile" class="input-file">