我的JavaScript代码:
$("#formimage").click(function(){
$("#avatar").click();
});
<input type="file" name="avatar" id="avatar" style="display: none;" onchange="this.form.submit()" />
在这里它不会调用头像文件标签......甚至没有在浏览器控制台中给出任何错误
答案 0 :(得分:2)
单击其他内容很难触发输入类型文件。您将遇到的最大问题是IE会将此视为安全问题,并且可能不允许您这样做(如果输入被隐藏)。要解决这个问题,你可以“淡化”图像背后的输入,这样当用户点击图像时,他们实际上是在点击文件输入。
你的HTML看起来像这样:
<div class="hiddenFileInputContainter">
<img class="fileDownload" src="/images/ico_upload.png">
<input type="file" name="fileUp" class="hidden" accept="image/*">
</div>
然后你需要将输入的不透明度设置为零,以便让它后面的图像可见,而不实际从页面中删除输入:
input[type='file'].hidden
{
margin: 0;
padding: 0;
position: absolute;
top: 0;
right: 0;
height: 100%;
font-size: 50px;
cursor: pointer;
opacity: 0;
-moz-opacity: 0;
filter: Alpha(Opacity=0);
}
您还需要设置图像和容器的尺寸:
img.fileDownload
{
height: 26px;
width: 26px;
padding: 0;
display: inline-block;
vertical-align: middle;
margin: 0 4px 0 0;
cursor: pointer;
position: absolute;
top: 0;
left: 0;
}
div.hiddenFileInputContainter
{
position: relative;
display: inline-block;
width: 27px;
height: 27px;
overflow: hidden;
vertical-align: middle;
cursor: pointer;
}
请注意,输入的尺寸是溢出的,因此无论您在何处单击容器,都会触及其中的输入。输入应尽可能大,按钮的实际尺寸在容器和图像上设置。
一旦你设法打开对话框,提交表单只会是这样做的:
$("#fileUploadField").on("change", function() {
$("#formId").submit();
});
或尝试此操作使文件输入看起来像按钮: