before-upload文件上传函数中实现只有通过点击上传按钮才返回true
时间: 2024-09-25 07:10:51 浏览: 29
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
在前端文件上传处理中,`before-upload`回调通常用于验证用户选择的文件是否满足某些条件,例如文件大小、格式等。如果你想确保这个函数只在用户实际点击上传按钮(而非其他触发方式)时返回`true`,可以在事件监听器内部检查是否是由点击上传按钮触发的。
以下是一个简单的HTML和JavaScript例子:
```html
<input type="file" id="fileInput" onchange="handleFileUpload(event)">
<button onclick="uploadFile()">上传</button>
<script>
function handleFileUpload(e) {
e.preventDefault(); // 阻止默认行为,防止文件直接提交
const target = e.target || event.srcElement;
if (target.tagName.toLowerCase() === 'input' && target.type === 'file') { // 检查是否是文件输入元素
if (event.originalEvent instanceof MouseEvent) { // 确定是鼠标点击事件
if (validateFile(target.files[0])) { // 文件验证成功
return true;
} else {
alert('文件不合格');
return false;
}
} else {
// 如果不是鼠标点击,可能是其他事件,如键盘操作,返回false
return false;
}
} else {
return false; // 非文件输入元素,返回false
}
}
function validateFile(file) {
// 这里添加你的文件验证逻辑
// ...
// 验证通过则返回true,否则返回false
}
</script>
```
在这个例子中,当用户改变文件选择或点击上传按钮时,`handleFileUpload`会被调用。只有当它检测到的是由鼠标点击引发的事件并且文件验证通过时,才会返回`true`允许上传。
阅读全文