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

Love The Way You Lie 2022-05-27 12:57 1250阅读 0赞

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

传统写法

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

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

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

非常规写法

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

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

  1. $("#uptea").click(function () {
  2. $("#upteainput").click();
  3. });
  4. //下面是ajax上传文件的代码,此处就不做过多讲解。
  5. $("#upteainput").change(function () {
  6. //如果上传文件的input内容发生了变化
  7. $val = $("#upteainput").val();
  8. if ($val != '') {
  9. //要上传的文件名不为空
  10. $data = new FormData($("#upform")[0]);//创建一个formdata对象
  11. $host = window.location.host;
  12. $.ajax({
  13. url: "http://" + $host + "/home/front/up-tea",
  14. type: "POST",
  15. data: $data,
  16. processData: false,
  17. contentType: false,
  18. dataType: "json",
  19. error: function () {
  20. alert('Error loading XML document');
  21. },
  22. success: function (data, status) {
  23. //如果调用php成功
  24. if (data.errno != 0) {
  25. if (data.errmsg != '') {
  26. alert(data.errmsg);
  27. } else {
  28. alert("系统错误");
  29. }
  30. }
  31. console.log(data);
  32. alert("导入成功");
  33. window.location.reload();
  34. }
  35. });
  36. }
  37. });

实际效果如下所示

这里写图片描述

发表评论

表情:
评论列表 (有 1 条评论,1250人围观)
蒲公英云72D95B
蒲公英云72D95BV铁粉 2022-11-14 11:48
没有任何作用

相关阅读