您的位置:首页 > Web前端 > CSS

【HTML+CSS】input:file

2017-01-11 00:00 204 查看
【问题1】
原生的 input:file 外观通常不符合页面设计需求,这时我们会想用div或其他方法重新实现一个按钮,点击此按钮时触发 input:file 的 click 事件以弹框选择路径。然而,ie低版本仅支持手动触发click。
【解决方案】
将 input:file 控件放在自定义按钮的上方,并通过 css 的 “opacity: 0;” 将其设置为透明。

【问题2】
有时我们通过在 input:file 上添加 onchange 事件监听用户选择的路径变化,但当用户选择的路径与上次的一样时,此事件将不会触发。
【解决方案】
当我们需要在每次用户选择路径后都执行某些操作时,会想在 onchange 事件中获取路径后将 file 的value(或 files) 置为初始值(空字符串/空数组),然而部分浏览器禁止对这两个属性进行赋值,所以更好的做法是,在这些浏览器环境下,将 file 控件克隆后替换,如下:

triggerbtn.on('change',function g() {
//... 获取value/files及其他操作
try {// 清空控件中的值 - 确保下次选择文件后肯定触发 change
this.files = [];
this.value = '';
} catch (e) {// 兼容处理,部分浏览器不支持 对 this.files 及 this.value 赋值
var n = triggerbtn.clone(true);
n.on('change', g);
triggerbtn.replaceWith(n);
triggerbtn = n;
}
//... 一些操作
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: