不幸的是我的前端技能缺乏,因为我的角色让我更多地使用服务器端/ db技术而不是css / js。无论如何,我正试图实现这个:
更具体地说,我能够在这里找到一个asp.net示例:
基本上允许您进行大量图片上传。
我已经用正确的css和js文件设置了前端。我必须修改一些js文件以使用on()
而不是live()
作为live is deprecated。我的表单加载,如下所示:
然而,到目前为止,只要我"添加文件"或拖放文件chrome开发人员工具告诉我以下内容:
Uncaught TypeError: Cannot read property '_adjustMaxNumberOfFiles' of undefined
它将文件指定为jquery.fileupload-ui.js
,更具体地指出了我:
var that = $(this).data('fileupload');
that._adjustMaxNumberOfFiles(-data.files.length);
我alert
编辑that
当然它似乎未定义......但我不知道足够的jquery来理解为什么它是未定义的。我的fileupload div标记如下:
<div id="fileupload">
<form action="/Handler.ashx" method="POST" enctype="multipart/form-data">
<div class="fileupload-buttonbar">
<label class="fileinput-button">
<span>Add files...</span>
<input id="file" type="file" name="files[]" multiple>
</label>
<button type="submit" class="start">Start upload</button>
<button type="reset" class="cancel">Cancel upload</button>
<button type="button" class="delete">Delete files</button>
</div>
</form>
<div class="fileupload-content">
<table class="files"></table>
<div class="fileupload-progressbar"></div>
</div>
</div>
那么可能导致这种情况未定义的原因是什么?这是_adjustMaxNumberOfFiles
做的事情
_adjustMaxNumberOfFiles: function (operand) {
if (typeof this.options.maxNumberOfFiles === 'number') {
this.options.maxNumberOfFiles += operand;
if (this.options.maxNumberOfFiles < 1) {
this._disableFileInputButton();
} else {
this._enableFileInputButton();
}
}
},
我使用的是jquery 2.0.3和jquery ui 1.10.3
我已经明白了我发布的示例链接(上面的第二个链接)唯一的区别是他们正在使用的jquery的版本,看起来是1.8.2而我使用的是2.0。 3。差异和问题是这段代码:
var that = $(this).data('fileupload');
在示例下载中,这会返回一些奇怪的对象:
a.(anonymous function).(anonymous function) {element: e.fn.e.init[1], options: Object, _sequence: Object, _total: 0, _loaded: 0…}
在我的版本中(使用2.0.3)我对此未定义:
var that = $(this).data('fileupload');
我还有另一种方法可以执行这一行代码吗?
答案 0 :(得分:5)
在控制台窗口中玩了很多次之后,我得到了它:
var that = $("#fileupload").data('blueimpUI-fileupload');
所以任何使用任何东西的人都是&gt; jQuery 1.8请更改此行:
var that = $(this).data('fileupload');
到此:
var that = $("#fileupload").data('blueimpUI-fileupload');
答案 1 :(得分:0)
你是如何初始化插件的?问题可能是您的选择器。定位表单本身,而不是包装div。
基于你的HTML ...
尝试更改:$('#fileupload').fileupload({ /*options*/ });
收件人:$('#fileupload form').fileupload({ /*options*/ });
此外,您可能还必须将.fileupload-content
div移到form
标记内。