2013-12-11 62 views
2

我認爲將textarea更改爲不可見將從用戶視圖中消失,但仍然隱藏着存儲的信息?對於我的結果,只要textarea保持可見,Jquery就能夠獲得信息。 C#服務器端代碼是將textarea更改爲false的人。爲什麼當可見性變爲false時,JQuery無法獲取Textarea值?

當我點擊第一個按鈕(BtnIPAM)後,C#服務器端從textarea獲取信息並完成這項工作,然後將textarea可見變爲false。

然後我點擊第二個按鈕(BtnISM)來調用JQuery來獲得相同的textarea,但它什麼都沒有。 如果我在C#服務器端註釋掉離開textarea可見,JQuery將能夠從textarea獲取信息。

任何人都知道爲什麼會發生這種情況,並解決它的一種方法?

ASPX代碼包括文字區域,第一按鈕(BtnIPAM)和第二按鈕(BtnISM):

<asp:TextBox ID="txt" runat="server" visible="False" TextMode="MultiLine" 
       Width=356px Height=200px style="margin-left: 0px"></asp:TextBox> 

<asp:Button ID="BtnIPAM" runat="server" onclick="BtnIPAM_Click" 
      Text="Assign It!" /> 
     <br /> 
     <asp:Button ID="BtnISM" runat="server" 
      OnClientClick="if (!CreateIsm()) {return false;}" UseSubmitBehavior="false" 
      Text="ISM Easy Button" /> 

簡單C#按鈕點擊方法,

protected void BtnIPAM_Click(object sender, EventArgs e) 
{ 
    //other codes are doing job before change txt to false 
    txt.Visible = false; 
} 

在JavaScript的CreateIsm()函數,我使用notes = $('#txt').val();來獲取textarea信息。

回答

2

在ASP.NET服務器端代碼中,將Visible設置爲false實際上不會使控件不可見,但不會在頁面上呈現它。

如果你想呈現一個隱藏的控制,你可以寫:

txt.Style.Add(HtmlTextWriterStyle.Display, "none"); 

或者乾脆:

txt.Style.Add("display", "none"); 
+0

謝謝!這工作,並感謝解釋。 – StudentIT

0

<asp:TextBox>可能會在頁面上爲您的控件創建備用ID,因此搜索'#txt'將無法​​獲得實際控件。或者,您可以將ClientIDMode設置爲ClientIDMode.Static(只需在控件上爲該屬性指定Static),那麼它將不會更改您的ID,但您必須確保頁面上的所有控件都具有唯一的ID。

像這樣:

<asp:TextBox ID="txt" runat="server" ClientIDMode="Static"> 

此外,在控制設置Visible='false'甚至不會寫的標記,以顯示在頁面上,所以該控件不存在。

2

在asp.net當你設置可見假控制不渲染頁面上,這就是爲什麼你不能訪問它

頁面上
1

txt.Visible = false;使你的textarea的HTML根本不會被渲染代碼。您可以使用txt.Attributes["style"] = "display:none";

相關問題