检测从子页面JQuery对父页面中的隐藏字段所做的更改

时间:2017-06-16 03:19:05

标签: javascript jquery

我有两页,让我们说ParentPage.aspx和ChildPage.aspx。在ParentPage.aspx中我有一个hiddenField,我们称之为hidField1

<input type="hidden" name="hidField1" id="hidField1" value="0" runat="server" />

然后我使用ParentPage.aspx中的以下函数打开Childpage。

function myFunc(){
  var url = "ChildPage.aspx";
  window.open(url,'_blank');   
}

然后在父页面中进行一些处理后,hideField1值从0变为1.

我需要能够从ChildPage.aspx跟踪这个。目前我正在运行一个setInterval函数,其中1000ms设置为$(document).ready(function () {...});内的间隔,以下是我到目前为止的内容

 setInterval(function () {
            var hideField1= $("#hideField1", window.opener.document).val();
            if (hideField1 == "1") {
                console.log("change detected now reset from child!!!");
                $("#hideField1", window.opener.document).val("0");
            }
        }, 1000);

这可以按预期工作,当父页面发生更改时,我可以从子页面看到,也可以从子页面更改父页面的隐藏字段值。但这意味着此setInterval函数将每秒运行一次,以便检测此更改。

如何使用jQuery 执行此操作,而无需使用setInterval函数。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

使用事件监听器,您可以通过执行以下操作在jQuery中完成此操作; https://jsfiddle.net/w2kLto71/

const hidden = $('#hidden');

hidden.on('change', function(e) {
  const target = $(e.target); // if you need jquery, if not e.target.value
  alert(target.val());
  // conditional
})