从另一个页面调用控件事件

时间:2014-05-23 17:22:01

标签: javascript

我需要页面

页面#1有2个控件 textbox1(这是记录的ID) textbox2(这是该记录的描述) 搜索按钮

textbox1有一个事件更改,它根据数据

更新textbox2

第2页 这是来自第1页上的搜索按钮的呼叫 显示列表或记录 当用户点击记录时,它会更新第1页上的textbox1

window.opener.document.getElementById(toUpdate).value = ctl;

这就像一个魅力

现在我的问题是更改事件不会在第1页

上触发

有没有办法在第2页内强制第1页上的更改事件?

2 个答案:

答案 0 :(得分:0)

根据您设置事件的方式(如果添加了监听器,或者您正在讨论onchange事件),您可以触发该事件或调用onchange方法,如下所示:

的document.getElementById( 'whateverelementyourelookingfor')平变化();

答案 1 :(得分:0)

通过javascript更新时不会触发Onchange。我建议使用Messaging API。它适用于现代浏览器(和IE8 +)。

从第1页开始,订阅消息:

function handleMessage(event) {
    //convert back to javascript object
    var updateObj = JSON.parse(event.data);
    //Get id from the data in the message
    var elem = document.getElementById(updateObj.toUpdate);
    //Set the value from the data in the message
    elem.value = updateObj.ctl;

    //perform change specific functions here.
}

if (window.addEventListener) {
    window.addEventListener("message", handleMessage, false);
}
else {
    window.attachEvent("onmessage", handleMessage); // For IE8
}

从第2页开始,将消息发送到窗口(而不是调用document.getElementById ...):

//Post the message to the window. Second argument specifies the destination origin.
//Use "*" wildcard for anything
window.opener.postMessage(JSON.stringify({toUpdate: toUpdate, ctl: ctl}), "*");

我整理了一个fiddle来证明这一点(即使消息是从同一个窗口发布的)。