我的 JavaScript 代码:
$("#formimage").click(function(){
$("#avatar").click();
});
<input type="file" name="avatar" id="avatar" style="display: none;" onchange="this.form.submit()" />
在这它不调用头像文件标签......甚至没有给出任何错误......在浏览器控制台中
我的 JavaScript 代码:
$("#formimage").click(function(){
$("#avatar").click();
});
<input type="file" name="avatar" id="avatar" style="display: none;" onchange="this.form.submit()" />
在这它不调用头像文件标签......甚至没有给出任何错误......在浏览器控制台中
通过单击其他内容很难触发类型文件的输入。您将遇到的最大问题是 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();
});
或者尝试这个使文件输入看起来像按钮: