(選擇文件) 元素隱藏,並通過其它方式觸發點擊。file input 美化" type="hidden"/>

將html中的(選擇文件) 元素隱藏,並通過其它方式觸發點擊。file input 美化


file input的默認外觀實在不好看,所以我們要搞定它。。

1. 首先,我們把file input放入一個label,並且將這個label顯示為一定的寬高,比如顯示為(bootstrap)btn的樣式(這個label你把樣式搞成啥樣都行,都不會影響后面的功能);

2. 為此input增加樣式,內聯或css文件內寫都可以:style="left:-9999px;position:absolute;"

3. 在label內增加文本(作為label btn的顯示文本),比如下方示例中的span;

<label id="realBtn" class="btn btn-info">
     <input type="file" id="fileInput1" name="file" class="mFileInput" style="left:-9999px;position:absolute;">
     <span>導入EXCEL數據</span>
</label>

如此即可,無需再添加任何js函數,就能讓這個label在被點擊時,與file input點擊產生同樣的效果。這是label標簽的一個bug,但是這個bug的通用性極好,連ie7都沒問題。

我也查過網上的一些方案,我建議大家不要使用triger等模擬點擊的方式觸發file input的點擊,從安全角度講,js是不建議這樣做的,所以兼容性完全沒有保障,再就是,使用透明file input在指定區域懸掛遮蓋鼠標的方式,因為要用js處理,所以在性能上會有問題,同時,經我測試,在快速操作時,還是會暴露出一些bug的,很撓頭,只有我在本文中所寫的方法,才是我認為最上乘的方案,有更好的方案,歡迎大家的指點。

如果需要顯示文件名,就在file input的change事件里取它的value就行了。

但是這里就有另一個問題了,就是選擇相同的文件不觸發change,而且file input的value的清空方法,各瀏覽器兼容性並不好,但是這個與本貼主題關系不大,我在另一貼中寫一寫我的解決方法:http://www.cnblogs.com/laozuan/p/4660405.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM