获取input type=file的文件名及input type=file获取文件名的浏览器,设置input type=file样式

获取input type=file的文件名方法:

 

        let filePath = $("input[type = 'file']").val();        //获取路径

        let urlArr = filePath.split("\\");                    //以反斜杠'\'截取文件名为数组

        let fileName = urlArr[urlArr.length-1];        //获取文件名

input type=file在个浏览器中样式各不相同,如下图所示:

若要统一样式,可将原有样式设置属性 opacity: 0,布局上用定位position:relative/absolute实现,实现效果如下:


具体实现代码如下:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <script src="./d3/jquery-1.12.0.min.js"></script>
    <style>
        .fileIpt {
            width: 423px;
            height: 30px;
        }
        input {
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
        }
        .label-text[for = "inputDataBackup1"] {
            color: #0e0e0e;
            padding: 5px 20px 6px 20px;
            margin-bottom: 0px;
            font-weight: 500;
            background: #2fc8f6;
            border-radius: 3px 0px 0px 3px;
            -webkit-border-radius: 3px 0px 0px 3px;
            -moz-border-radius: 3px 0px 0px 3px;
            font-size: 14px;
            vertical-align: middle;
            text-align: center;
        }
        #inputDataBackup1 {
            width: 268px;
            height: 30px;
            background: transparent;
            position: relative;
            display: inline-block;
            margin-left: -6px;
            padding: 1px 0px 0px 0px;
            color: #57D1F7;
            text-align: center;
            vertical-align: middle;
            border: 2px solid #2fc8f6;
            border-radius: 3px;
            -webkit-border-radius: 3px;
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
        }
      .selectFile {
          position: absolute;
          left: 0;
          top: -1px;
          z-index: 3;
          height: 30px;
          width: 268px;
          opacity: 0;
      }
    .errTip {
          position: absolute;
          top: 20px;
          left: 50%;
          margin-left: -90px;
          color: red;
          font-size: 12px;
      }
    .fileName {
          width: 210px;
          height: 30px;
          position: absolute;
          left: 0;
          top: -2px;
          z-index: 1;
          color: #000;
          text-align: center;
          background-color: transparent;
          border-color: transparent;
          overflow: hidden;
          text-overflow: ellipsis;
      }
    .path {
          width: 55px;
          height: 30px;
          background-color: #2fc8f6;
          display: inline-block;
          position: absolute;
          top: -2px;
          right: 0;
          z-index: -1;
          text-align: center;
          vertical-align: middle;
          border-radius: 0px 3px 3px 0px;
          -webkit-border-radius: 0px 3px 3px 0px;
          -moz-border-radius: 0px 3px 3px 0px;
      }
      .pathText {
          display: inline-block;
            font-size: 12px;
            line-height: 30px;
            color: #fff;
            letter-spacing: 3px;
      }
    </style>
</head>
<body>
    <div class="fileIpt">
      <label class="label-text" for="inputDataBackup1">选择文件</label>
      <div id="inputDataBackup1" class="input-selectStyle">
        <input class="selectFile" type="file" multiple="multiple" title="未选择任何文件">
        <p class="errTip"></p><input class="fileName" readonly="readonly">
        <div class="path">
          <span class="pathText">上传</span>
        </div>
      </div>
    </div>
    <script type="text/javascript">
        $(".selectFile").on("change",function(){
            console.log($(this))
            var filesNum = $('.selectFile')[0].files.length;
            if(filesNum > 1){
                var fileTiltle = [];
                for(var i = 0 ;i<filesNum;i++){
                    var file=$('.selectFile')[0].files[i];
                    console.log(file.name);
                    fileTiltle.push(file.name)
                }
                $(".fileName").val(fileTiltle.join(","));
                $(this).attr("title",filesNum+'个文件');
            }else if(filesNum == 1){
                var filePath = $(this).val();
                var urlArr = filePath.split("\\");
                var fileName = urlArr[urlArr.length-1];
                $(".fileName").val(fileName);
                $(this).attr("title",fileName);
            }
        
        if(fileName == "") {
            $(".errTip").html("请选择上传文件");
        }else{
            $(".errTip").html("");
        }
    })
    </script>
</body>
 
</html>

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦兜_冰夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值