html - 自定义输入类型=“文件”
解决方案
一种可能的方法是<input>
像往常一样包含一个元素,并用一些 CSS 隐藏它,然后添加一个图像并使用 Javascript 来处理onclick
和onchange
事件。
下面的代码片段寻找对图像的点击并触发对(不可见)<input>
元素的点击。一旦选择了文件,在表单上触发的change
事件就会触发。<input>
submit
请注意,“提交”事件在 Stack Overflow 沙箱中被阻止,因此如果您运行该代码段那么远,您将看到一条错误消息。
(function(){
document.getElementById('sil').addEventListener('click', function(){
document.getElementById('photoFile').click();
document.getElementById('photoFile').addEventListener('change', function(){
document.getElementById('myForm').submit();
});
});
})()
input[type=file] {
display:none;
}
img {
width:100px;
cursor:pointer;
}
<form method="post" enctype="multipart/form-data">
<img src="https://i.stack.imgur.com/uNJLP.png" id="sil">
<input type='file' name='photoFile' id='photoFile'>
</form>
推荐阅读
- xml - 我的 XSLT 提取与节点值对应的值有什么问题?
- perl - 在不遍历整个哈希的情况下查找子哈希中的密钥
- c# - 有没有办法在不解压缓冲区(C++/CLR)的情况下使用 CredUIPromptForWindowsCredentialsW?
- sql - 有没有办法根据 R 中的一组条件使用表 T2 中的列 B 更新表 T1 中的列 A?
- python-3.x - python3中的随机模块不可调用错误
- python - 杀死正在运行 Gstreamer 的子进程
- sas - SAS DS2 代码不适用于远程服务器
- powershell - Powershell 正在 GitHub 操作中吃引号
- c# - 如何从 Azure 服务总线读取消息
- python - 将列表作为参数传递给python中的函数