2010-08-25 61 views
0

我有一個html列表。在這個列表中有一系列圖像,一些信息和一個按鈕。當用戶點擊按鈕時,我想要一個textarea和一個按鈕出現在列表中相關圖像的下面。然後用戶使用一些機器學習反饋填充textarea,然後單擊按鈕向服務器發送回發。Javascript/C#:出現Textarea OnClick

如何編寫出現在按鈕按下的Javascript,但仍然與父圖像相關聯?

我想要一個直接的Javascript,而不是jQuery的答案,因爲我還在學習Javascript。我正在使用C#4.0和ASP.net。

我有幾個可能的實現思路:

  1. 創建一個JavaScript函數,使用包含文本區域和按鍵的Response.Write HTML寫的。我無法使用asp:按鈕,因此我不知道如何完成回發。
  2. 有一個隱藏的asp:按鈕和asp:文本框,當按下魔術出現按鈕時會填充。魔術按鈕會傳遞一個id到asp:按鈕並激活一次點擊。我可能需要一個隱藏標籤來存儲id的值。

我認爲#2是最好的也許是最簡單的方法,但我不知道在Javascript中出現面板的最佳方法。

回答

0

如果您還想使用ASP.NET,請將textareas添加到中繼器類型的控件中,並將文本框元素包圍在一個簡單的標記中。給每個div一個唯一的ID,可以使用由.NET生成的文本框ClientID屬性來確定。然後,創建一個JavaScript函數,它將一個id作爲參數,並根據當前狀態將該元素的可見性設置爲true或falase。這樣,您只有一個JavaScript函數可以處理顯示或隱藏任何文本框,並且使用ASP.NET回發功能,回發功能仍然完好無損。

你的JavaScript函數會是這樣的......

function showHideTextBox(divID) 
{ 
    if(document.getElementById(divID).style.visibility == "visible") 
    { 
     document.getElementById(divID).style.visibility = "hidden"; 
    } 
    else 
    { 
     document.getElementById(divID).style.visibility = "visible";   
    } 
} 

爲了您的按鈕,需要顯示或隱藏文本框,設置它們的OnClientClick事件的功能。例如...

string divID = "div" + myDynamicTextBox.ClientID; 
btn.OnClientClick = "showHideTextBox('" + divID + "')"; 

希望幫助!

+0

這是沿着我的一個intials想法的線條,但發送所有文本與顯示:無風格是不是有點浪費。我希望有一種方法來呈現客戶端的textarea和按鈕。儘管如果客戶端渲染不可行,這肯定會起作用。謝謝。 – Charlie 2010-08-25 00:40:31

+0

是的你是對的,這會導致大量額外的HTML,所以如果你在一個帶寬可能有限的公共網站環境中(而不是Intranet環境),那麼可以考慮其他方法。 您可以動態地通過JavaScript動態添加文本框。當用戶單擊按鈕保存文本時,如果知道動態文本框的ID,則使用Request.Params屬性獲取表單結果。當他們點擊按鈕時,javascript可以將一個隱藏的表單字段設置爲可以在服務器端隨後選取的動態文本框的值。 – 2010-08-25 02:26:07