Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在复选框或单选框上执行jQuery触发器,使其与用户单击它时完全相同?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在复选框或单选框上执行jQuery触发器,使其与用户单击它时完全相同?

Javascript 如何在复选框或单选框上执行jQuery触发器,使其与用户单击它时完全相同?,javascript,jquery,Javascript,Jquery,我有一个页面正在使用can.js,因此很难在jsfiddle.net上复制,但最终的结果是: 如果我单击复选框(也可以是单选按钮),则另一个输入文本框将更新由于我的单击而引起的更改。(例如,文本框现在将显示“蓝色”) 但是,如果我在Firebug的控制台或Chrome的开发人员工具控制台中使用jQuery以编程方式执行此操作: $("#some-form input:eq(3)").trigger("click"); 或 然后网页上的复选框实际上会被选中,但是输入文本框值不会像以前一样更新

我有一个页面正在使用can.js,因此很难在jsfiddle.net上复制,但最终的结果是:

如果我单击复选框(也可以是单选按钮),则另一个
输入
文本框将更新由于我的单击而引起的更改。(例如,文本框现在将显示“蓝色”)

但是,如果我在Firebug的控制台或Chrome的开发人员工具控制台中使用jQuery以编程方式执行此操作:

$("#some-form input:eq(3)").trigger("click");  

然后网页上的复选框实际上会被选中,但是
输入
文本框值不会像以前一样更新为“蓝色”

因此,为了更接近地模拟用户使用代码单击复选框,我尝试:

$("#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()来更新
输入
文本框可能会很复杂,但关键是,如果用户手动单击收音机或复选框可以工作,为什么不以编程方式工作呢。换言之,可以通过编程完成哪些与实际单击几乎相同的操作?是否有一些我可能错过的事件


(更多详细信息:这是在最新的Firefox和Chrome上尝试过的,因此这不应该是浏览器问题。此外,我甚至尝试过先聚焦,然后触发带有空格字符的按键事件,但仍然没有效果。更奇怪的是,如果我触发两次点击,那么
输入
文本框a实际上显示了“蓝色”的更新,为什么要两次呢?

答案是,这是由于jQuery的错误:

我可以使用以下方法复制它:

// strange behavior:
$("#some-form input:eq(3)").click();
如果替换为本机
,请单击

document.getElementById("some-form").getElementsByTagName("input")[3].click();
然后它就可以在Chrome、Safari和Firefox上完美运行

因此,修复程序似乎是在2013年1月15日发布的jQuery1.9

更多信息请参见:

document.getElementById("some-form").getElementsByTagName("input")[3].click();