【问题标题】:Upload button styling causes file list to not be shown?上传按钮样式导致文件列表不显示?
【发布时间】:2013-10-05 03:26:58
【问题描述】:

我已经为fineUploaderS3 对象定义了模板和文件模板选项。

我已经能够更改 qq-upload-button 元素的外观,方法是将 div 更改为按钮,并在上传器创建后将其设置为按钮。

    template: '<div class="qq-uploader">' +
    '<div class="qq-upload-drop-area"><span>{dragZoneText}</span></div>' +
    '<button class="qq-upload-button"><div>{uploadButtonText}</div></button>' +
    '<span class="qq-drop-processing"><span>{dropProcessingText}</span><span class="qq-drop-processing-spinner"></span></span>' +
    '<ul class="qq-upload-list"></ul>' +
    '</div>',

    ...

    $('.qq-upload-button').button();

虽然按钮发生了变化,并且在单击添加文件时可以正常工作,但文件没有显示在列表中,这显然是损坏的。

让Upload按钮使用当前jQueryUI风格按钮的正确方法是什么?

更新 1

阅读以下帖子后:How to assign custom css class to upload button in fineuploader?

看起来上传按钮尝试更改为普通的jQueryUI按钮会很有问题。

所以我通过将上传按钮更改为“显示:无”解决了这个问题,创建了我自己的通用 jQueryUI 按钮,点击我的按钮,点击隐藏按钮。

解决方案:

    <button id="addFiles">Add Files</button>

    ...

    template: '<div class="qq-uploader">' +
    '<div class="qq-upload-drop-area"><span>{dragZoneText}</span></div>' +
    '<div class="qq-upload-button" style="display:none;"><div>{uploadButtonText}</div></div>' +
    '<span class="qq-drop-processing"><span>{dropProcessingText}</span><span class="qq-drop-processing-spinner"></span></span>' +
    '<ul class="qq-upload-list"></ul>' +
    '</div>',

    ...            

    $('#addFiles').click(function() {
    $(".qq-uploader input").click();
    });

【问题讨论】:

  • 您应该发布您的解决方案作为答案,以便其他人受益。
  • 由于在这些浏览器中实施了安全限制,您的方法将不适用于 IE9 和更早版本。我们将很快研究 jQuery UI 按钮的问题...

标签: fine-uploader


【解决方案1】:

您的解决方案不适用于 IE9 和更早版本,因为在这些浏览器中不允许以编程方式单击输入元素。

使用 button 元素作为上传按钮在 IE9 及更低版本上不起作用,因为这些浏览器会在 Fine Uploader 能够之前拦截 button 元素上的更改事件。此外,jQuery-UI 按钮构造函数也必须添加一些拦截事件的逻辑,因为我需要在 before Fine Uploader 之前实例化它。可能与earlier question regarding Bootstrap's button 相关。

跨浏览器解决方案是首先将您的按钮呈现为 div 而不是 button,然后在该元素上实例化 jQuery-UI 的 button(),然后使用 @987654329 实例化 Fine Uploader 的实例@ 选项设置为该元素。此外,通过我提出的更改,您可以取消 template 选项。 Fine Uploader 在默认模板中有一些逻辑,可以根据 button 选项的存在添加或删除自己的按钮元素。

  <h3>Fine Uploader</h3>
  <div id="addFiles"">Add Files</div>
  <div id="jquery-wrapped-fine-uploader"></div>
$(document).ready(function() {

    // Construct jQuery-UI button
    $("#addFiles").button();

    // Instantiate Fine Uploader
    $('#jquery-wrapped-fine-uploader').fineUploaderS3({
        button: $("#addFiles")
      });

});

【讨论】:

  • 感谢您处理 IE9。虽然我知道 FineUploader 项目可能希望继续支持 IE9,但真的不再需要它了吗?我刚刚检查了w3schools.com/browsers/browsers_explorer.asp,他们显示的是 IE9 及以下版本,总共大约 6%。 6% 绝对是一个有些人可能不想接受的数字,但是如果容纳 6% 的浏览器会给他们自己带来很大的痛苦。
  • IE9 接近 10%,IE8 接近 25%。 Fine Uploader 仍然支持 IE7,甚至没有立即放弃对该版本的支持的计划。 IE9 及更早版本占用了大量网络流量,因此取消对这些浏览器的支持是不明智的。
  • 精细上传器模板系统大修时间表是什么时候?
  • 正在进行中。事实上,develop 分支已经完成了这个功能。计划将其作为 4.0 的一部分发布,同时生成缩略图。在 4.0 发布之前可能还有大约 2 周的工作。如果您有任何建议,我强烈建议您在 4.0 版本之前查看并评论 associated case (#867)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2018-07-19
相关资源
最近更新 更多