。点击Onchange不能在Mac OS上运行,但可以在Windows / linux上运行

时间:2017-11-15 16:24:34

标签: javascript jquery macos

所以我有一个类似

的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。

1 个答案:

答案 0 :(得分:0)

您只能以编程方式从用户启动的事件中触发文件对话框窗口。

https://blog.mariusschulz.com/2016/05/31/programmatically-opening-a-file-dialog-with-javascript

在这种情况下,我不确定change事件是否会计算,因为用户发起的事件通常类似于clickmousedown,{{1} },mouseupscrollresize

或许尝试重构以对上述事件之一做出反应(来自keyup)。