2017-06-16 9 views
1

私は2ページあります、ParentPage.aspxとChildPage.aspxとしましょう。私はhiddenFieldを持っているParentPage.aspxでは、それを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からこれを追跡できるようにする必要があります。現在、私は$(document).ready(function() {...});内部間隔として1000ミリ秒セットでsetInterval機能を実行すると、次の午前は、私がこれまで持っているものである

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関数が毎秒実行されることを意味します。

どうすればいいですか?jQuerysetInterval関数を使用しないでを使用する必要はありません。

答えて

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

I私はあなたの答えを理解していないが、私がこれまで値が親に変更されるまで、これがまた、何度も何度も自分自身を繰り返すよう、あなたの答えと私が持っているとの違いを見ることができない場合は事前に謝罪ページ。何が起こりたいのですか?親ページの非表示フィールドに変更が加えられたときに子ページがタイマーを実行して変更が検出されないようにすると、この機能がトリガーされます。 –

+0

@PissuPusa私の謝罪。私はeventListenersを使用する答えを更新しました。そこで、その入力で起こった変更を聞きます。 – Perspective

関連する問題