input file上传文件改变默认样式

简介: input file上传文件改变默认样式

我们知道,在使用到input file上传文件的时候,会出现这样很丑的默认样式,作为前端开发的我们,主要责任就是去优化这些样式,以更美观的方式呈现出来,但是,这个默认样式没有可以去修改的属性,还是比较麻烦的。


这个时候,就需要用到一些障眼法了,将原来的样式隐藏起来,再重新写一个按钮代替,与原来的位置重合即可。原本的样式是这样的:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>       
    </head>
    <body>      
        <input type="file" class="file-upload" />        
    </body>
</html>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
</script>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
        <style>
            #importExcel {
                color: #fff;
                width: 51px;
                height: 30px;
                display: inline-block;
                border: none;
                background: cornflowerblue;
                background-size: 100% 100%;
            }
            .change {
                position: absolute;
                display: block;
                width: 103px;
                top: 2px;
                left: 5px;
                height: 40px;
                opacity: 0;
                cursor: pointer;
            }
            .file-name {
                position: absolute;
                top: 9px;
                width: 133px;
                height: 30px;
                padding: 0 8px;
                line-height: 25px;
                margin-left: 86px;
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
                cursor: pointer;
            }
            .btnMask {
                color: #fff;
                width: 86px;
                height: 30px;
                text-align: center;
                line-height: 30px;
                margin-right: 131px;
                display: inline-block;
                border: none;
                background: cornflowerblue;
                background-size: 100% 100%;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <form s action="/criminal/import" id="uploadForm" enctype="multipart/form-data" method="post">
            <a class="btnMask">选择文件</a>
            <input class="change" id="mFile" type="file" name="mFile">
            <div class="file-name"></div>
            <input type="button" value="导入" id="importExcel" name="btn">
        </form>
    </body>
    <script>
        $("#mFile").change(function() {
            var arrs = $(this).val().split('\\');
            var filename = arrs[arrs.length - 1];
            $(".file-name").html(filename);
        });
        //导入按钮
        $('#importExcel').click(function() {
            if(checkData()) {
                $('#uploadForm').ajaxSubmit({
                    url: "http://localhost:3000/users",
                    success: function(data) {
                        alert(JSON.stringify(data))
                        for(var i = 0; i < data.length; i++) { // 这里的i是代表数组的下标
                            if(i == data.length - 1)
                                alert("已插入" + data[i] + "条罪犯数据")
                            else
                                alert(data[i])
                        }
                    }
                });
            }
        });
        //JS校验form表单信息    
        function checkData() {
            var fileDir = $("#mFile").val();
            var suffix = fileDir.substr(fileDir.lastIndexOf("."));
            if("" == fileDir) {
                msg(5, "选择需要导入的Excel文件!");
                return false;
            }
            if(".xls" != suffix && ".xlsx" != suffix) {
                msg(5, "选择Excel格式的文件导入!");
                return false;
            }
            return true;
        }
    </script>
</html>

这是改完以后的样式,根据需要来设置属性,这里已经写好了选择文件,导入到表格里面的效果啦。

相关文章
【moment】moment时间前后一个月,小于当天 或15天内
【moment】moment时间前后一个月,小于当天 或15天内
|
4月前
|
Web App开发 前端开发 数据可视化
用 CSS Grid 实现高效布局的 3 个实战技巧
用 CSS Grid 实现高效布局的 3 个实战技巧
|
前端开发 JavaScript
前端 CSS 经典:文字描边
前端 CSS 经典:文字描边
572 0
|
11月前
Node安装版本低于工程版本时打包绕过校验
在开发中,若本地Node版本低于项目配置要求,导致打包报错(如图所示),可在不变更本地环境的情况下,通过在执行`npm run build`前输入命令`set NODE_OPTIONS=--openssl-legacy-provider`来绕行此问题,确保构建顺利进行。
683 10
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
346 3
|
移动开发 人工智能 前端开发
介绍一些免费 的 html 5模版网站 和配色 网站
介绍一些免费 的 html 5模版网站 和配色 网站
2927 3
|
JavaScript API 索引
js中的reduce()方法 讲解 和实现
`reduce()` 方法对数组元素依次应用一个回调函数,将结果累计并最终返回单一值。语法为 `reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)`。参数包括累计器(初次为初始值或首元素)、当前元素值、索引及数组自身。此方法需返回值供下一轮迭代使用。常见应用场景包括计算数组总和与平均值、统计元素频率、过滤与转换数组内容及去除重复项等。例如,可通过 `reduce()` 快速计算 `[1, 2, 3, 4, 5]` 的总和或对对象属性值求和。此外,还可自定义实现 `reduce()` 方法
5426 1
|
前端开发 Java
org.springframework.web.multipart.MultipartException: Current request is not a multipart request
org.springframework.web.multipart.MultipartException: Current request is not a multipart request
502 0
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
2431 0