繁体   English   中英

调用输入的点击事件在 Safari 中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM