关于jQuery中给input赋值,手动触发它的change事件却没反应的问题

我在js文件中,通过$(parent.frames[“commonViewContent”].contentDocument).find("[name=‘inputName’]");拿到了我要赋值的input。

var $commonViewContent=$(parent.frames["commonViewContent"].contentDocument);
var $input = $commonViewContent.find("[name='inputName']");
$input.val(value);
$input.trigger("change");

我一开始是这么写的,给input赋完值后,给input手动触发change事件,按道理应该没问题的,但没用!
然后我试了其他方法,比如用onpropertychange和oninput,或者用focus和blur,甚至把它们一起用,但是都没有效果,我百思不得其解,上百度找也找不到解决的办法。
直到我问我一同事,他告诉我,我获取的input所在的页面和这个js文件所在的页面不是同一个页面。这个时候我才反应过来。
。。。。。。
。。。。。。

我说我怎么设置都不管用!!!
关于jQuery中给input赋值,手动触发它的change事件却没反应的问题_第1张图片

因为不是同一个页面的话,用js文件里的“$”对象,是获取不到另一个页面中的input的事件的,所以不管我怎么设置都没反应。

要想给input赋值后再手动触发它的事件的话,要先获取到input所在页面的"$“对象,然后再通过这个”$"对象获取到的input才是可以触发事件的input。

因为input所在的页面和js文件所在的页面都是同一个父窗口,所以要获取到它的"$"对象就很简单了。

//父窗口中找到input所在的子窗口,通过contentWindow获取子窗口里的内容,这些内容里面就包含了"$"。
var $c = parent.frames["commonViewContent"].contentWindow.$;
$c("[name='inputName']").trigger("change");

这样就可以触发了!(就这?就这?就这?就这浪费我一天时间。。。我 直接泪奔.jpg)

你可能感兴趣的:(js,jquery)