2017-06-16 23 views
1

我有两个页面,比方说ParentPage.aspx和ChildPage.aspx。在ParentPage.aspx中我有一个hiddenField,我们称之为hidField1检测从子页面对父页面中隐藏字段所做的更改JQuery

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

那么我打开ChildPage使用ParentPage.aspx中的以下函数。

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

然后在父页面进行一些处理之后,hideField1值会从0

我需要能够从ChildPage.aspx跟踪这1变化。目前我正在一个setInterval功能与1000毫秒设置为内部$(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函数。任何帮助,非常感谢。

回答

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 
}) 
+0

我提前道歉,如果我没有理解你的答案,但我看不到你的答案,我有这么远,直到该值在父改变,这也一次又一次地重复本身有什么区别页。我想要发生的事情是触发这个功能,当父页面中的隐藏字段发生变化,以防止子页面运行定时器来检测更改 –

+0

@PissuPusa我的歉意。我已经更新了使用eventListeners的答案,因此我们将听取该输入中发生的更改。 – Perspective

相关问题