关于文件选择器 input type=file原生样式的优化

直入正题

  • 原生样式
<input type="file" class="form-control" id="fileName"  multiple="true" required>

效果:
在这里插入图片描述

优化

原理:
①新增一个类型为 text 的input 框,主要用来存放显示 选择的文件地址;
②input框右边新增一个按钮 ”选择文件“,用来点击时触发原生input type=file的点击事件;
③隐藏原生input的样式。
④ 关于onChange事件,如果是如下代码:

οnchange=“document.getElementById(‘text-field’).value=this.value”
出来的效果会是这样:
在这里插入图片描述
这个路径是浏览器安全策略,所以显示fakepath,我们也可以修改浏览器安全策略,但是很多时候不能指望客户去手动修改。在我这里显示路径没有意义,只是为了显示一下文件名即可。所以下面代码里我做了处理,截取文件名显示即可。

代码:

<div>
    <input type='text' id='text-field' class="form-control" />
    <span class="input-group-btn">
	       <button type='button' class='btn btn-primary language_label'
	                             onclick="document.getElementById('fileName').click()">Select_the_file
	       </button>
    </span>
    <input  type="file" id="fileName" class="file2" style="display: none" onchange="document.getElementById('text-field').value=this.value.substring(this.value.lastIndexOf('\\')+1)" />
</div>
...

<style>
    .file2{
        filter:alpha(opacity:0);
        opacity:0;
        width:0px
    }
</style>

优化后效果:
在这里插入图片描述

感觉还可以~
希望可以帮助到有需要的小伙伴!


路虽远,行则将至;事虽难,做则可成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值