2010-11-08 54 views
0

它在第一次加載頁面時正常運行。但是,當我們做Postback時,編輯器會隨着textarea消失。 回發是由於頁面上的下拉菜單發生的。openWYSIWYG-編輯器在回發中消失

<asp:TextBox runat="server" ID="TBClosingInstructions" TextMode="MultiLine" Rows="8" Columns="40" TabIndex="2" Font-Name="Verdana"></asp:TextBox><script language="JavaScript">generate_wysiwyg('TBClosingInstructions');</script> 

我希望編輯器在回發後仍然保留。我試過下面的代碼

if (Page.IsPostBack) 
      { 
       this.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script language=\"JavaScript\">generate_wysiwyg('TBClosingInstructions');</script>", true); 
       Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ClientScript", "<script language=\"JavaScript\">generate_wysiwyg('TBClosingInstructions');</script>", true); 
      } 

嘗試registerStartupScript和registerClientScriptBlock單獨綁定每個回發中的JavaScript函數。但這不起作用。

有沒有其他的選擇?請建議。

回答

0

有幾種將編輯器附加到textarea的方法。

WYSIWYG.attach('all',mysettings);

這就是我使用哪個工作得很好,如果你的內容/表單沒有動態加載。

查看附加到加載事件的源代碼。這可能是爲什麼它沒有被附加。

WYSIWYG_Core.addEvent(window, "load", function generateEditor() { WYSIWYG._generate(id, settings); }); 

WYSIWYG.attachAll(mySettings);

我發現這個工程(所有textareas),再次查看源代碼,它在DOM中查找每個textarea並且不附加到事件。

var areas = document.getElementsByTagName("textarea"); 
for (var i = 0; i < areas.length; i++) { 
    var id = areas[i].getAttribute("id"); 
    if (id == null || id == "") continue; 
    this.setSettings(id, settings); 
    WYSIWYG_Core.includeCSS(this.config[id].CSSFile); 
    WYSIWYG._generate(id, settings); 
}