8

我有一个带有表单元素和弹出窗口(由 window.open 打开)的网页。

两者都有 jQuery 可用。

弹出窗口有一个 javascript,可以更改打开器窗口中的表单元素。通过这样做可以完美地工作...

$(opener.document.formelement).val(vals[0]);

但是,这样做不会触发 onChange 事件。但是,其他一些页面元素会要求这样做。所以我尝试自己触发 onChange 事件

$(opener.document.formelement).change();

但这无济于事。

有什么提示吗?由于其他页面元素的体系结构,我绝对必须触发 onChange 事件。

这个问题类似于Call Javascript onchange event by programatically changed textbox value,但该问题的建议解决方案似乎对我不起作用。也许这是因为弹出窗口。

4

3 回答 3

10

也许它是伤害您的跨窗口...尝试在您调用的 opener 内部创建一个函数。可能有帮助?

在开瓶器中:

window.changeMyElement = function(value) {
  $(formelement).val(value).change();
}

从弹出窗口:

opener.changeMyElement(value);
于 2009-05-13T02:38:02.023 回答
2

这条线应该工作:

$(opener.document.formelement).change();

根据 jQuery文档,这一行触发每个匹配元素的更改事件。

如果它对您不起作用,那么您的代码中的某个地方就有问题。你可以通过手动更改表单元素来触发onchange事件吗?

于 2009-05-12T23:11:10.150 回答
0

你也可以这样做:

window.opener.document.getElementById('controlname').fireEvent('onchange');

或在您的上下文中:

$(opener.document.formelement).fireEvent('onchange');
于 2010-04-06T17:27:04.560 回答