我有以下代码上传并显示上传的文件的警报绝对正常 . 但是,当我将文件名保存到我的服务器时,我将其添加到文件名中,id就像jquery中的done函数一样,用保存的文件名更新隐藏字段的值 . 我认为这很简单,但事实并非如此 . 让我告诉你我正在使用的代码:
用于上传每个附加项目表单的文件的功能 . 这应该工作:
function bindFileUpload() {
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
alert(file.name);
});
}
});
};
我用来附加更多项目表单的代码如下 . 再次,这与上述功能一起工作正常 . 我要设置值的输入是 .itemPhotoFile
$(document).on('click','.addItem', function(){
$('<!--ROW START-->\
<form class="widget-content item">\
<div class="row">\
<div class="col-md-3"><input type="text" class="form-control" name="itemName[]"></div>\
<div class="col-md-3"><textarea class="auto form-control" name="itemDescription[]" cols="20" rows="1" style="word-wrap: break-word; resize: vertical;"></textarea></div>\
<div class="col-md-3"><textarea class="auto form-control" name="itemCondition[]" cols="20" rows="1" style="word-wrap: break-word; resize: vertical;"></textarea></div>\
<input type="hidden" class="itemId" name="itemId[]" value="">\
<input type="hidden" class="itemPhotoFile" name="itemPhoto[]" value="">\
<input type="hidden" name="itemInventoryId[]" value="<?=$_GET["inventory_id"]?>">\
<input type="hidden" name="itemParent[]" value="'+$(this).closest('.formHolder').data('parent-room')+'">\
<div class="col-md-2">\
<div class="fileinput-holder input-group" data-item-id="">\
<!-- <div class="uploadPhotoBox">Upload Photo</div> -->\
<input class="fileupload" type="file" name="files[]" data-url="uploads/">\
</div>\
</div>\
<div class="col-md-1 align-center"><i class="save icon-ok large"> </i> <i class="delete icon-trash large"> </i></div>\
</div>\
</form>\
<!--/ROW END-->').fadeIn(500).appendTo($(this).parents().siblings('.items')).each(function(){
bindFileUpload();
});
$(this).parents().siblings('.widget-header, .header-margin, .hide').removeClass('hide').fadeIn();
});
我尝试过如下想法:
function bindFileUpload() {
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
alert(file.name);
$(this).closest('.itemPhotoFile').val(file.name);
});
}
});
};
但没有运气,我不认为它知道 $(this)
是正确的,无法找到输入 . 我无法在上传之前找到输入字段的值,因为这不是最终文件名 . 因此,在上传成功后,它的工作非常重要 .
谢谢!
2 回答
您将要在数据参数内传递的“表单”中进行搜索:
在
$.each()
内,this
是迭代的当前元素 . 但即使它不认为文件上传插件将.done
回调中的this
绑定到原始元素 . 所以我认为你需要用循环显式地做到这一点: