小技巧实现修改input-file样式,代理上传

本文介绍了一种通过隐藏默认inputfile并自定义按钮样式的方法来实现文件上传功能。利用事件代理,点击自定义按钮时触发文件选择对话框,并能够显示所选文件的名称。为确保功能正确运行,文中特别强调了使用unbind()方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

input file样式是不可以修改的,所以我们做到的是隐藏掉默认的input,

然后自己写一些按钮样式,用事件代理做点击事件完美解决;


//事件代理点击,获取file文件名;
$(document).on("click", ".fileinput>span", function() {
   $(".fileinput>input").click();
   var str = "";
   $("#upfile").unbind().on("change", function() {
      var obj = document.getElementById("upfile");
      var length = obj.files.length;
      console.log(length);
      if(length == 0) {
         str += '<i class="FileArea">' + 未选择任何文件 + '</i>';
      } else {
         for(var i = 0; i < length; i++) {
            $(".FileArea").html("");
            var temp = obj.files[i].name;
            console.log(temp);
            str += '<i class="FileArea">' + temp + '</i>';
         }
      }
      $(".fileinput").append(str);
   });

})

要注意的是为什么要加上unbind()这个方法!

为什么要加这个方法呢

file input出于安全角度,是不允许赋值的,即使是置空,虽然通过给outerHtml赋值可以清空,但貌似仅在ie下起使用。

所以只能重置这个方法达到情况的目的


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值