[英]calling click event of input doesn't work in Safari
我有一个输入文件类型, 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();
控制台没有错误。 我试过这个,但没有。
$(document).ready(function(){ $("#btn").on('click',function(){ $("#ajxAttachFiles")[0].click(); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> <input id="ajxAttachFiles" type="file" style="display:none;"> <button id="btn" type="button">Click me!</button>
问题彻底解决。 要点是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);
<input id="inputFile" type="file" name="file" style="visibility:hidden; width:0; height:0"> <button id="selectFile">Select</button>
在 DOM 元素而不是 jQuery 对象上触发 click 事件。 这应该适用于所有浏览器。
$('#ajxAttachFiles')[0].click();
或者:
document.getElementById('ajxAttachFiles').dispatchEvent( new Event('click') );
//for IE < 9 use microsoft's document.createEventObject
var elem=$('<input id="ajxAttachFiles" name="fileUpload" type="file" style="display: none;"/>'); if($("#ajxAttachFiles").length==0){ elem.prependTo(".ChProgress"); } $("#ajxAttachFiles").on('click',function() { alert( 'click triggered' ); }); $("#ajxAttachFiles")[0].click(); //an alternative: var event = new Event('click'); document.getElementById('ajxAttachFiles').dispatchEvent(event);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="ChProgress">Will be added here</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.