input[tyle="file"]样式修改及上传文件名显示

默认的上传样式我们总觉得不太好看,根据需求总想改成和上下结构统一的风格……

实现方法和思路:

  1.在input元素外加a超链接标签

  2.给a标签设置按钮样式

  3.设置input[type='file']为透明,并定位,覆盖在a上面

html代码:

<a class="input-file input-fileup" href="javascript:;">
     + 选择文件<input size="100" type="file" name="file" id="file">
</a>

css代码: 

.input-file{
    display: inline-block;
    position: relative;
    overflow: hidden;
    text-align: center;
    width: auto;
    background-color: #2c7;
    border: solid 1px #ddd;
    border-radius: 4px;
    padding: 5px 10px;
    font-size: 12px;
    font-weight: normal;
    line-height: 18px;
    color:#fff;
    text-decoration: none;
}
.input-file input[type="file"] {
    position: absolute;
    top: 0;
    right: 0;
    font-size: 14px;
    background-color: #fff;
    transform: translate(-300px, 0px) scale(4);
    height: 40px;
    opacity: 0;
    filter: alpha(opacity=0);
 }

 

 效果:

此时并不能显示上传的文件名,如需显示出上传的文件名需要js来处理

js代码:

<script>
        $(function(){
            $(".input-fileup").on("change","input[type='file']",function(){
                var filePath=$(this).val();
                if(filePath.indexOf("jpg")!=-1 || filePath.indexOf("png")!=-1){
                    $(".fileerrorTip1").html("").hide();
                    var arr=filePath.split('\\');
                    var fileName=arr[arr.length-1];
                    $(".showFileName1").html(fileName);
                }else{
                    $(".showFileName1").html("");
                    $(".fileerrorTip1").html("您未上传文件,或者您上传文件类型有误!").show();
                    return false
                }
            })
        })
    </script>

 同时需要给html加上两个div

<a class="input-file input-fileup" href="javascript:;">
         + 选择文件<input size="100" type="file" name="file" id="file">
</a>
<div class="fileerrorTip1"></div> <div class="showFileName1"></div>

 

 效果:

 

posted @ 2016-11-01 17:50  蓝眼睛~~  阅读(11113)  评论(0编辑  收藏  举报