【HTML】上传文件input样式美化

起因,最近因为一些原因,在写一个前端小页面,但是上传文件的样式怎么调整都不是很满意。遂转变思维想到了如下方法。

传统写法

<form id="upform" enctype='multipart/form-data'>
    <div class="form-group">
        <label for="upteainput">上传文件</label>
        <input id="upteainput" name="upfile" type="file" class="form-control-file">
    </div>
</form>

效果如下图所示
这里写图片描述

这个样式调整了很长时间,最后结果都不尽人意。

非常规写法


<form id="upform" enctype='multipart/form-data' style="display:none;">
    <div class="form-group">
        <label for="upteainput">上传文件</label>
        <input id="upteainput" name="upfile" type="file" class="form-control-file">
    </div>
</form>
<button id="uptea" type="button" class="btn btn-primary">上传</button>

给真正的用于上传文件的Input style='display:none;'隐藏起来,然后用一个很容易控制样式的button或者div盒子等代替。当点击button的时候,同时用js触发点击那个用于上传文件的input即可。

$("#uptea").click(function () {
    $("#upteainput").click();
});

//下面是ajax上传文件的代码,此处就不做过多讲解。 
$("#upteainput").change(function () {//如果上传文件的input内容发生了变化
            $val = $("#upteainput").val();
            if ($val != '') {//要上传的文件名不为空
                $data = new FormData($("#upform")[0]);//创建一个formdata对象
                $host = window.location.host;
                $.ajax({
                    url: "http://" + $host + "/home/front/up-tea",
                    type: "POST",
                    data: $data,
                    processData: false,
                    contentType: false,
                    dataType: "json",
                    error: function () {
                        alert('Error loading XML document');
                    },
                    success: function (data, status) {//如果调用php成功
                        if (data.errno != 0) {
                            if (data.errmsg != '') {
                                alert(data.errmsg);
                            } else {
                                alert("系统错误");
                            }
                        }
                        console.log(data);
                        alert("导入成功");
                        window.location.reload();
                    }
                });
            }
        });

实际效果如下所示

这里写图片描述

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值