[JS][前端]修改文件input为button样式

本文介绍如何在前端开发中将文件输入标签input美化为button样式,通过设置input透明度为0或者使其不可见,再利用button触发input的点击事件,实现表单文件提交的美观效果。

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

问题描述

在开发的时候,遇到了需要提交表单文件的需求,但是原生<input>标签特别不好看,而且还有点击提交文件的提示,这样很影响美观,于是便想着更改<input><button>按钮。

解决方案

  1. 建立一个button按钮,在其上面覆盖表单框,且设置表单的透明度为0,这样虽然用户看到的是button,但是点击的确实
  2. 将隐藏,当点击button的时候,去触发的点击,用户点击的是button,但是触发的是input的事件。

实现方案

  1. 设置input透明度为0的方法
<input class="file" accept="image/*" name="file" type="file">
<input class="btn" id="submit" value="点击拍照上传" type="button">

对应的css样式

.file {
    width: 150px;
    height: 50px;
    position: absolute;
    top: 50px;
    left: 30%;
    z-index: 1;
    opacity: 0;
}
.btn {
    width: 150px;
    height: 50px;
    font-size: 16px;
    color: #fff;
    background: #28abde;
    border-radius: 5px;
    position: absolute;
    top: 50px;
    left: 30%;
}

这种方法是加了一层看不见的input,用户看到的是button,但是点击的却是input,在网站攻击的时候也可能会用到这种方法,当用户误以为点击了底层的元素,但是实际上点击的顶层看不见的元素,导致泄密。

  1. 设置input不可见,并由button去触发。
<form name="form1">
 <input type="file" name="picpath" id="picpath" style="display:none;" onChange="document.form1.path.value=this.value">
 <input type="button" value="上传文件" onclick="document.form1.picpath.click()"> 
</form>

当用户点击button按钮的时候会触发click事件,当文件域的值改变时同时修改对应表单内的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值