多文件上传时如何限制总文件数量不超过5个?
我用 input type="file" 加了 multiple 属性实现多选,但用户一次选了10个文件,我想限制总共最多传5个。试过在 change 事件里判断 e.target.files.length,但超过后不知道怎么清空或截断,求解!
这是我现在写的处理逻辑:
document.getElementById('fileInput').addEventListener('change', (e) => {
const files = e.target.files;
if (files.length > 5) {
alert('最多只能上传5个文件!');
// 这里该怎么重置 input 或只保留前5个?
}
});
首先,我们要监听文件输入框的
change事件,在用户选择了文件后触发。然后检查选择的文件数量是否超过了我们的限制(这里是5个文件)。如果超过了,我们需要向用户展示一个提示信息,并且需要清除当前的文件选择。这里有一个小坑需要注意:直接设置
e.target.value = ''并不能有效清除文件选择,因为现代浏览器出于安全考虑,不允许脚本直接设置文件输入的值。不过我们可以创建一个新的文件输入元素来替换掉旧的,从而达到清空选择的效果。以下是具体的实现代码:
在这段代码中,我们做了以下几步:
1. 监听文件输入框的
change事件。2. 获取用户选择的文件列表。
3. 检查文件数量是否超过5个。
4. 如果超过,弹出警告信息。
5. 创建一个新的文件输入元素,并将其插入到DOM中替换掉旧的元素。
6. 由于新创建的元素没有绑定事件,所以需要重新绑定
change事件。这样,当用户选择超过5个文件时,不仅会收到警告,而且文件选择也会被清空,用户可以重新选择不超过5个文件。