首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当弹出窗口中输入元素被JavaScript更改时,引发"onChange“事件

当弹出窗口中输入元素被JavaScript更改时,引发"onChange“事件
EN

Stack Overflow用户
提问于 2009-05-12 22:51:06
回答 3查看 29.7K关注 0票数 8

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

两者都有可用的jQuery。

弹出窗口具有可以改变打开窗口中的表单元素的javascript。这是完美的,通过做...

代码语言:javascript
运行
复制
$(opener.document.formelement).val(vals[0]);

但是,通过这样做,onChange事件将不会触发。不过,这也是其他一些页面元素所必需的。因此,我尝试用以下命令触发onChange事件

代码语言:javascript
运行
复制
$(opener.document.formelement).change();

但这并不能解决任何问题。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-13 02:38:02

也许是跨窗口在伤害你……尝试在opener中创建一个函数,然后调用该函数。可能会有帮助?

在开场白中:

代码语言:javascript
运行
复制
window.changeMyElement = function(value) {
  $(formelement).val(value).change();
}

从弹出窗口中:

代码语言:javascript
运行
复制
opener.changeMyElement(value);
票数 10
EN

Stack Overflow用户

发布于 2009-05-12 23:11:10

这一行应该是有效的:

代码语言:javascript
运行
复制
$(opener.document.formelement).change();

根据jQuery documentation,此行触发每个匹配元素的更改事件。

如果它对你不起作用,那么一定是你的代码出了问题。是否可以通过手动更改表单元素来触发onchange事件?

票数 2
EN

Stack Overflow用户

发布于 2010-04-07 01:27:05

您还可以执行以下操作:

代码语言:javascript
运行
复制
window.opener.document.getElementById('controlname').fireEvent('onchange');

或者在您的上下文中:

代码语言:javascript
运行
复制
$(opener.document.formelement).fireEvent('onchange');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/855264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档