js、jquery、Bootstrap实现拖拽上传文件

首先,我的错误代码

<!-- 此处省略css样式 -->
<div id="excelImport">
	<input id="fileupload" type="file" style="display:none;" />
	<div>点击上传文件</div>
</div>


<script>
	// 此处省略引入的juqery
	$("#excelImport").click(function() {
		$('#fileupload').click();//此处会触发
	});
	
	$('#fileupload').change(function() {
		var uploadFiles = $('#fileupload').prop('files');
		$("#textfield").val(uploadFiles[0].name);
		startUpload(uploadFiles)
	})
</script>

最后并不会触发选择文件;百思不得其解。

然后发现了使用Bootstrap实现拖拽文件上传的Bootstrap实现拖拽文件上传https://blog.csdn.net/linhaiyun_ytdx/article/details/76212182

再结合美化文件上传样式https://blog.csdn.net/iaoyou1/article/details/80952962

先放演示效果:
1、初始样式
在这里插入图片描述
2、上传后的样式
在这里插入图片描述

最终较可观的代码如下:(后续还需要再完善


<style>
    
    .js-upload-finished {
        margin-top: 20px;
    }
    
    .list-group {
        margin-top: 10px;
    }
    
    .upload-drop-title {
        margin: 20px 0 10px;
    }
    
    /* layout.css Style */ 
    .upload-drop-zone {
        height: 200px;
        border-width: 2px;
        margin-bottom: 20px;
    }
    /* skin.css Style*/
    .upload-drop-zone {
        color: #ccc;
        border-style: dashed;
        border-color: #ccc;
        line-height: 200px;
        text-align: center
    }
    
    .upload-drop-zone.drop {
        color: #222;
        border-color: #222;
    }
</style>

<body>
    <div class="container">
        <div class="panel panel-success">
            <div class="panel-heading" style="text-align: center;"><strong>上传文件</strong></div>
            <div class="panel-body">
                <!-- Standar Form -->
                <div class="form-inline">
                    <div class="form-group">
                        <label for="fileupload">请选择文件:</label>
                        <input id="fileupload" type="file" name="fileupload" accept=".xls,.xlsx" multiple="" style="display:none;" />
                        <input type='text' class="form-control" name='textfield' id='textfield' autocomplete="off" readonly="readonly" />
                        <input id="excelImport" type="button" value="浏览" class="btn btn-success" />
                    </div>
                </div>

                <!-- Drop Zone -->
                <div class="upload-drop-title">或者将文件拖拽到这里</div>
                <div class="upload-drop-zone" id="drop-zone">
                    将文件拖拽到这里
                </div>
                
                <!-- Upload Finished -->
                <div class="js-upload-finished"></div>
            </div>
        </div>
    </div>
    <!-- /container -->
    <!-- 此处引入的文件需要根据自己的文件路径进行修改 -->
    <script src="__PUBLIC__/Js/jquery-1.12.4.min.js"></script>
    <script src="__PUBLIC__/Js/bootstrap.min.js"></script>
    <script>
        $(document).ready(function() {
            $("#excelImport").click(function() {
                $('#fileupload').click();
            });
            $('#fileupload').change(function() {
                var uploadFiles = $('#fileupload').prop('files');
                $("#textfield").val(uploadFiles[0].name);
                startUpload(uploadFiles)
            })
        });
        
        $(function() {
            // UPLOAD CLASS DEFINITION
            // ======================

            var dropZone = document.getElementById('drop-zone');
            var uploadForm = $('#js-upload-form');
            
            uploadForm.on('submit', function(e) {
                var uploadFiles = $('#fileupload').prop('files');
                e.preventDefault()
                startUpload(uploadFiles)
            })

            dropZone.ondrop = function(e) {
                e.preventDefault();
                this.className = 'upload-drop-zone';
                $("#textfield").val('');//清空手动浏览上传文件的input
                startUpload(e.dataTransfer.files)
            }
            dropZone.ondragover = function() {
                this.className = 'upload-drop-zone drop';
                return false;
            }
            dropZone.ondragleave = function() {
                this.className = 'upload-drop-zone';
                return false;
            }
        })

        function startUpload(files) {
            // 上传的文件
            console.log(files)
            $('.js-upload-finished').html(
                '<h3>已上传文件</h3>' +
                '<div class="list-group">' +
                '<a href="#" class="list-group-item list-group-item-success">' +
                '<span class="badge alert-success pull-right">Success</span>' +
                files[0].name + '</a></div>'
            )
            return
        }

    </script>
</body>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery Bootstrap是一个非常受欢迎的JavaScript库和前端框架,可用于开发交互式的网页应用程序。它提供了丰富的组件和工具,以简化开发过程并提高用户体验。而拖拽表单可视化设计器是一种功能,允许用户通过拖拽和放置表单元素来快速创建表单界面。 实现拖拽表单可视化设计器的源码可以包括以下主要功能: 1. 初始化设计器:使用jQueryBootstrap创建一个空白页面,设置拖拽区域和工具栏。 2. 表单元素的拖拽:为表单元素添加拖拽事件,使它们可以被拖拽拖拽区域。这可以通过jQuery UI中的拖拽功能来实现。 3. 表单元素的放置:通过设置拖拽区域的放置事件,将被拖拽的表单元素放置到指定位置,并实时显示其样式和属性。 4. 表单元素的编辑:在放置表单元素后,可以通过双击或右键单击来触发表单元素的编辑功能,允许用户修改表单元素的属性,例如标签文本、字段类型和验证规则等。 5. 表单元素的删除:通过右键菜单或其他交互方式,提供删除表单元素的功能,以便用户可以轻松地删除不需要的元素。 6. 表单元素的布局:通过拖拽和调整表单元素的位置和大小,可以实现表单界面的布局调整,以达到用户的需求。 7. 表单界面的保存和导出:提供保存和导出设计好的表单界面的功能,以便后续使用或分享。 通过结合jQueryBootstrap的强大功能,上述源码可以实现一个直观易用的拖拽表单可视化设计器,用户可以轻松创建自定义的表单界面,而无需编写复杂的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值