jQuery动态添加input type=file文件上传域,全部信息填写完后通过ajax提交
时间: 2023-12-06 13:03:10 浏览: 84
以下是实现 jQuery 动态添加 input type=file 文件上传域并全部信息填写完后通过 ajax 提交的代码。
HTML 代码:
```html
<form id="upload-form">
<div id="file-list"></div>
<button id="add-file">添加文件</button>
<button type="submit">提交</button>
</form>
```
JavaScript 代码:
```javascript
$(function() {
var fileList = $('#file-list');
var addButton = $('#add-file');
var uploadForm = $('#upload-form');
addButton.on('click', function() {
var fileInput = $('<input type="file" name="file">');
var removeButton = $('<button>删除</button>');
var listItem = $('<div></div>').append(fileInput).append(removeButton);
fileList.append(listItem);
removeButton.on('click', function() {
listItem.remove();
});
});
uploadForm.on('submit', function(event) {
event.preventDefault();
var formData = new FormData(this);
$.ajax({
url: '/upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data) {
console.log('上传成功');
}
});
});
});
```
具体实现步骤如下:
1. 创建一个表单,包含文件列表容器、添加文件按钮和提交按钮。
2. 给添加文件按钮绑定一个点击事件,动态创建一个 input type=file 文件上传域和删除按钮,将它们添加到文件列表容器中。
3. 给删除按钮绑定一个点击事件,当点击时将该文件上传域从文件列表容器中删除。
4. 给表单绑定一个提交事件,阻止默认提交行为,创建一个 FormData 对象,将表单中所有数据添加到其中,然后通过 ajax 发送到服务器。
5. 在 ajax 的 success 回调函数中处理上传成功后的逻辑。
注意,要设置 processData 和 contentType 为 false,这样 jQuery 就会将 FormData 对象中的数据直接发送到服务器,而不是将其转换为字符串发送。
阅读全文