snu*_*uve 4 html safari jquery file input
我有div哪一个点击触发输入文件.在其他浏览器(Chrome,Firefox,IE)中,它可以正常工作,但在Safari(5.1.7)中却没有.知道为什么吗?
$(function() {
$("#mask-button-file").click(function () {
$("#mask-load-file").trigger('click');
});
});
<div id="mask-button-file" class="hover active">
. . .
</div>
<input type="file" id="mask-load-file" name="file1" >
#mask-load-file{
display:none;
opacity:0;
}
#mask-button-file{
width:81px;
height: 40px;
background-color: #f70808;
float:left;
text-align: center;
vertical-align: middle;
line-height: 40px;
margin-left:1px;
cursor:pointer;
}
#mask-button-file:active{
background-color:#DF0005;
}
Run Code Online (Sandbox Code Playgroud)
这是因为输入被设置为display:none,这在safari中有问题.而不是隐藏它,将其包装在div中height,width设置为零.
<div>
<input type="file" id="myfile" name="upload"/>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div {
width: 0px;
height: 0px;
overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)
另一个选项是将输入定位在视口之外,使其不可见.
您可以参考这篇文章:Jquery触发器文件输入 以获取更多选项.