所以我有一个类似
的HTML部分<select name="espece-prise" id="espece-prise" size="1" onchange="selectespece();">
<option value="{liste.espece}">{liste.espece}</option>
</select>
然后我有一个input type='file'
来上传图片,这个输入是隐藏的并且有'btn_poster_photo'类。
我想要什么
当用户使用select(并单击某个选项)时,它会触发'onchange'并通过'selectespece()'函数点击隐藏按钮,这要归功于selectespece()中的.Click函数。所以之后所有这些js函数的结果是:
选择一个选项=&gt;它会打开一个窗口,您可以在其中选择要上载的文件
我做了什么
function selectespece() {
especeprise = $("#espece-prise").val(); //just a variable getting the value of my select (it works)
document.getElementById("btn_poster_photo").click();
}
我也用jQuery以不同的方式做到了
$("#espece-prise").on('change', function(){
especeprise = $("#espece-prise").val();
$(".btn_poster_photo").click();
})
发生了什么事?
当我选择一个选项时,它会触发点击,因此它要求我上传一张图片,这是正常的。这适用于Chrome / Firefox / Opera ...当我从Windows / Ubuntu / archlinux计算机上执行此操作时
BUT
当我在MacOS上使用safari / chrome进行尝试时它不起作用,在控制台中没有错误,我只选择了一些内容而没有任何反应。我尝试在我的函数'onchange'中发出一个警报它可以工作,所有工作但不是.Click函数......
我在Google上进行了多次搜索,但只发现了几个主题,在onchange后讨论了onclick,但在onchange中没有.click。
答案 0 :(得分:0)
您只能以编程方式从用户启动的事件中触发文件对话框窗口。
https://blog.mariusschulz.com/2016/05/31/programmatically-opening-a-file-dialog-with-javascript
在这种情况下,我不确定change
事件是否会计算,因为用户发起的事件通常类似于click
,mousedown
,{{1} },mouseup
,scroll
,resize
等
或许尝试重构以对上述事件之一做出反应(来自keyup
)。