2011-12-16 73 views
1

我正在使用用戶控件,我需要調用彈出窗口,它會詢問一個問題,並且需要將響應(true或false)發回給用戶控件調用彈出窗口。我聲明瞭一個隱藏字段來存儲客戶端的值,以便我可以從後面的代碼訪問它,然後執行進一步的代碼。我有以下代碼:Asp.Net從javascript中的彈出窗口中獲取值

ASP.Net

<script type="text/javascript"> 
     function confirmNoCallList() { 
      debugger; 
      var resp = confirm("¿Seguro/a que desea agregar a este subscriptor a la 
         lista de 'No Llamar'?"); 

      window.opener.document.getElementById('hfAddToNoCallList').value = resp; 
     } 
</script> 


<ajax:TabContainer ID="tbcMyProfile" runat="server" ActiveTabIndex="0" Width="500px"> 
     <ajax:TabPanel ID="tbpInfoCta" runat="server" HeaderText="Información de mi 
          Cuenta"> 
      <ContentTemplate> 
       <asp:HiddenField ID="hfAddToNoCallList" runat="server" /> 
. 
. 
. 

當函數打window.opener線,我得到一個錯誤。任何想法如何以正確的方式做到這一點?

+0

什麼你有錯誤嗎? – jrummell 2011-12-16 13:25:22

回答

1

你必須得到動態ClientID在運行或將其傳遞給一個函數和ARG,然後可以找到它:

document.getElementById('<%= hfAddToNoCallList.ClientID"%>').value = resp; 

function confirmNoCallList(hiddenField) { 
     debugger; 
     var resp = confirm("¿Seguro/a que desea agregar a este subscriptor a la 
        lista de 'No Llamar'?"); 

     document.getElementById(hiddenField).value = resp; 
    } 
+0

謝謝!這兩種方式正是我所期待的。 – 2011-12-16 13:48:43

1

window.opener爲您提供了一個對稱爲window.open(...)的瀏覽器窗口的引用來創建當前窗口。如果你不打電話window.open那麼開瓶器將是空的。

在您發佈的代碼段中,JavaScript和隱藏字段位於同一文檔中。嘗試從系統上拆除window.opener.window.opener.document.getElementById ...

+0

如果我這樣做,我得到以下錯誤:無法設置屬性值的對象:對象爲null或undefined – 2011-12-16 13:33:48