Sup*_*net 5 html javascript safari jquery
我有一个输入,文件类型,并带有display:none一个按钮。单击按钮后,应触发输入事件。在IE,Chrome和Firefox中,它可以工作,但在Safari中不起作用!
var elem=$('<input id="ajxAttachFiles" name="fileUpload" type="file" style="display: none;"/>');
if($("#ajxAttachFiles").length==0){
elem.prependTo(".ChProgress");
}
$("#ajxAttachFiles").click();
Run Code Online (Sandbox Code Playgroud)
控制台中没有错误。我尝试了这个,但是什么也没有。
var elem=$('<input id="ajxAttachFiles" name="fileUpload" type="file" style="display: none;"/>');
if($("#ajxAttachFiles").length==0){
elem.prependTo(".ChProgress");
}
$("#ajxAttachFiles").click();
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function(){
$("#btn").on('click',function(){
$("#ajxAttachFiles")[0].click();
});
});Run Code Online (Sandbox Code Playgroud)
问题彻底解决了。要点是 的元素input[type=file]一定不能是display: none。看下面的示例:
function click(el) {
// Simulate click on the element.
var evt = document.createEvent('Event');
evt.initEvent('click', true, true);
el.dispatchEvent(evt);
}
document.querySelector('#selectFile').addEventListener('click', function(e) {
var fileInput = document.querySelector('#inputFile');
//click(fileInput); // Simulate the click with a custom event.
fileInput.click(); // Or, use the native click() of the file input.
}, false);Run Code Online (Sandbox Code Playgroud)
<input id="inputFile" type="file" name="file" style="visibility:hidden; width:0; height:0">
<button id="selectFile">Select</button>Run Code Online (Sandbox Code Playgroud)