我有一个使用 can.js 的页面,因此很难在 jsfiddle.net 上重现,但最终结果是这样的:
如果我单击复选框(或者它也可以是单选按钮),那么另一个input
文本框将更新由于我的单击而导致的更改。(例如,文本框现在将显示“蓝色”)。
但是,如果我在 Firebug 的控制台或 Chrome 的开发人员工具控制台中以编程方式使用 jQuery:
$("#some-form input:eq(3)").trigger("click");
或者
$("#some-form input:eq(3)").click();
那么网页上的复选框实际上会被选中,但input
文本框的值不会像以前那样更新为“蓝色”。
因此,为了更接近地模拟用户使用代码单击复选框,我尝试了:
$("#some-form input:eq(3)").trigger("focus");
$("#some-form input:eq(3)").trigger("mousedown");
$("#some-form input:eq(3)").trigger("mouseup");
$("#some-form input:eq(3)").trigger("click");
$("#some-form input:eq(3)").trigger("change");
但以上所有内容仍然不会模拟用户手动单击复选框。
尽管 can.js 代码使用 can.compute() 或 can.Observe() 来更新该input
文本框可能很复杂,但关键是,如果用户手动单击收音机或复选框可以工作,为什么不以编程方式。换句话说,可以通过编程完成哪些几乎与实际物理点击相同的操作?是否有一些我可能错过的事件?
(更多详细信息:这是在最新的 Firefox 和 Chrome 上尝试过的,所以它不应该是浏览器问题。另外,我什至尝试过先聚焦,然后用空格字符触发 keydown 事件,但仍然没有效果. 更奇怪的是,如果我真的触发了两次点击,那么input
文本框实际上显示更新为“蓝色”,那为什么两次?)。