我有一个带有表单元素和弹出窗口的网页(由window.open打开)。
两者都有jQuery可用。
弹出窗口有一个javascript,可以更改开启窗口中的表单元素。通过做...完美地工作。
$(opener.document.formelement).val(vals[0]);
但是,通过这样做,onChange事件将不会触发。但是,这将是其他一些页面元素所必需的。所以我试着用
自己激活onChange事件$(opener.document.formelement).change();
但这没有任何作用。
任何提示?由于其他页面元素的体系结构,我肯定必须触发onChange事件。
此问题类似于Call Javascript onchange event by programatically changing textbox value,但该问题的建议解决方案似乎对我不起作用。也许那是因为弹出窗口。
答案 0 :(得分:10)
也许它的横向窗口正在伤害你...尝试在你打电话的开启者里面做一个功能。可能有帮助吗?
在揭幕战中:
window.changeMyElement = function(value) {
$(formelement).val(value).change();
}
来自弹出窗口:
opener.changeMyElement(value);
答案 1 :(得分:2)
这条线应该有效:
$(opener.document.formelement).change();
根据jQuery documentation,该行触发每个匹配元素的change事件。
如果它不适合你,那么你的代码就会出现问题。你可以通过手动更改表单元素来触发onchange事件吗?
答案 2 :(得分:0)
你也可以这样做:
window.opener.document.getElementById('controlname').fireEvent('onchange');
或者在您的背景下:
$(opener.document.formelement).fireEvent('onchange');