Blueimp jQuery-File-Upload 基本插件在 ASP.NET MVC 视图中显示不需要的提交按钮

如何解决Blueimp jQuery-File-Upload 基本插件在 ASP.NET MVC 视图中显示不需要的提交按钮

我有一项任务来编辑我们的一个较旧的公司 asp.NET MVC 应用程序,我们使用 flash (uploadify) 上传文件到这个时间。但是现在,我们想使用 Blueimp jQuery-File-Upload basic plugin

一切正常,但是不需要的提交按钮有问题,这是(我相信)从插件脚本本身生成的。

你有什么想法,如何防止这个按钮的生成

应用截图:

enter image description here

蓝色区域 = span(class fileInputButton),我将其用作打开文件浏览器窗口的按钮

绿色区域 = 不需要的提交按钮,由 blueimp 脚本生成

当我在浏览器中搜索页面上的元素时,结果是绿色区域是#file-upload-button 按钮类型,来自部分 cshtml 视图中的文件上传输入:

<div class="fileMenu">
        @*<div class="FileMenuItem">
            <input id="file_upload" name="file_upload" type="file" multiple="true">
        </div>*@
        <div class="FileMenuItem">
            <span class="FileInputButton">
                <span>PŘIDAT SOUBORY</span>
                <input id="fileupload" type="file" name="files" multiple>
            </span>
        </div>

        <div id="progress" style="position: relative; clear: both; padding-left: 19px; display: none">
            <img src="~/Images/ajax-loader.gif" />
        </div>

        @*Other non-important elements...*@

    </div>

我使用的 CSS:

.FileInputButton {
    position: relative;
    background: url(../Images/add-file-16.png) 3px 5px no-repeat;
    color: red;
    font: 12px Arial,Helvetica,sans-serif;
    width: 100%;
    padding-left: 25px;
    cursor: pointer;
    overflow: hidden;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.fileMenu {
    display: block;
    float: left;
    margin-top: 30px;
}

    .fileMenu .FileMenuItem {
        color: #E20B08;
        display: block;
        float: left;
        padding-left: 10px;
        width: 137px;
        font-size: 13px;
    }

文件上传功能,我在主视图Index.cshtml中有:

            $('#fileupload').fileupload({
                    url: '@Url.Action("UploadFiles","Case")',dataType: 'json',autoUpload: true,multipart: true,singleFileUploads: false
                }).on('fileuploaddone',function (e,data) {
                    var errorFiles = '';
                    $.each(data.files,function (index,file) {
                        var fileName = file.name;
                        if (file.error) {
                            errorFiles = errorFiles + '\n' + fileName + ',viz: ' + file.error;
                        } else {
                            //Some own non-important code...

                            try {
                                //Another non-important own code...
                            } catch (err) {
                                errorFiles = errorFiles + '\n' + fileName + ',viz: ' + err.message;
                            }
                        }
                    });

                    if (errorFiles !== '') {
                        alert('Error while uploading files:' + errorFiles);
                    }

                }).on('fileuploadadd',data) {
                    data.submit();

                }).on('fileuploadstop',data) {
                    $('#progress').hide();

                }).on('fileuploadstart',data) {
                    $('#progress').show();

                }).on('fileuploadfail',data) {
                    alert('File upload error');

                }).prop('disabled',!$.support.fileInput)
                .parent().addClass($.support.fileInput ? undefined : 'disabled');

我在共享 _Layout.csthml 中为此视图加载的脚本和 CSS

    <link href="~/Content/jmenu.css" rel="stylesheet" />
    <link href="~/Content/Site.css" rel="stylesheet" /> @*This one contains the .FileMenu,.FilemenuItem and .FileInputButton*@
    <link href="~/Content/checkBoxes.css" rel="stylesheet" />

    <script src="@Url.Content("~/Scripts/json2.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery/jquery.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery/jquery-ui.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.ui.datepicker-cs.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>


    <script src="@Url.Content("~/Scripts/JQuery/jquery.ui.widget.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/JQuery/jquery.fileupload.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/JQuery/jquery.iframe-transport.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/JStorage/jstorage.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/PDFObject/pdfobject.js")" type="text/javascript"></script>

    <script src="@Url.Content("~/Scripts/Mask/jquery.mask.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/Validation/CustomFieldValidator.js")" type="text/javascript"></script>

我认为这不重要,但要完整,控制器上传方法

        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult UploadFiles(List<HttpPostedFileBase> files)
        {
            List<string> fileNames = new List<string>();

            try
            {
                //Non-important own code

                return Json(
                    new
                    {
                        ProcessedFiles = fileNames
                    });
            }
            catch (Exception ex)
            {
                return Json(
                    new
                    {
                        ProcessedFiles = fileNames,Exception = ex.Message
                    });
            }
        }

我尝试了很多东西,但老实说,我是 ASP.NET、jquery、html 等方面的新手。所以我相信这对于了解这个领域的人来说是很平常的事情。

解决方法

感谢@Rory McCrossan 的评论,我有一个解决方案。我所要做的就是编辑我的 CSS 以隐藏原始文件输入并将该 CSS 应用到部分 cshtml 中。

所以改变...

部分 cshtml

<div class="fileMenu">
    @*<div class="FileMenuItem">
        <input id="file_upload" name="file_upload" type="file" multiple="true">
    </div>*@
    <div class="FileMenuItem">
        <span class="fileinput-button fileinput-overlap">
            <span>PŘIDAT SOUBORY</span>
            <input id="fileupload" type="file" name="files" multiple>
        </span>
    </div>

    <div id="progress" style="position: relative; clear: both; padding-left: 19px; display: none">
        <img src="~/Images/ajax-loader.gif" />
    </div>

    @*Other non-important elements...*@

</div>

和新的 CSS

.fileinput-button {
    position: relative;
    overflow: hidden;
    display: inline-block;
}
.fileinput-button input {
    position: absolute;
    top: 0;
    right: 0;
    margin: 0;
    height: 100%;
    opacity: 0;
    filter: alpha(opacity=0);
    font-size: 200px !important;
    direction: ltr;
    cursor: pointer;
}

.fileinput-overlap {
    background: url(../Images/add-file-16.png) 3px 5px no-repeat;
    background-position: left 0px top 6px;
    color: #E20B08;
    font: 12px Arial,Helvetica,sans-serif;
    width: 127px;
    padding-left: 20px;
    padding-top: 9px;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?