在knockout viewmodel页面中手动触发其他DOM元素上的click事件

时间:2014-03-12 15:38:22

标签: javascript jquery html knockout.js

在我的HTML中:

<input type="image" src="http://placehold.it/145x145" data-bind="click: imgClick"/>
<input type="file" id="artImage" style="display: none;" />

在我的viewmodel中:

var imgClick = function () {
    $("artImage").click();
};

如果我在&#39; $(&#34; artImage&#34;)上放置调试断点,请点击()&#39;线,它被击中。我在控制台中没有出错,但屏幕上没有任何错误。

似乎在小提琴中正常工作? http://jsfiddle.net/nVrSP/所以我不确定为什么它不在我的网页上工作。

(如果有人要求,我试图点击图片来触发文件上传浏览)

2 个答案:

答案 0 :(得分:2)

您的选择器很可能没有返回任何内容,因为您没有给它#说“这是ID。”

$("#artImage").trigger('click');

请参阅此链接以获取有效选择器的列表: https://cdn.tutsplus.com/net/uploads/legacy/154_cheatsheet/jquery12_colorcharge.png

答案 1 :(得分:0)

Dude,这是绝大多数浏览器的安全措施,什么都不做 on&#34; click&#34;如果html文件输入控件是隐藏

解决方法是使用不透明度隐藏文件输入控件,不要使用visibility或display = none隐藏它。

有关详细信息,请参阅此主题:

In JavaScript can I make a "click" event fire programmatically for a file input element?