0

最初にページが読み込まれるたびに、正しく機能しています。ただし、ポストバックを実行すると、エディターはテキストエリアだけで消えます。ページのドロップダウンが原因で、ポストバックが発生しています。

<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 関数をバインドしました。しかし、これはうまくいきません。

代替手段はありますか?提案してください。

4

1 に答える 1

0

エディターをテキストエリアにアタッチするメソッドがいくつかあります。

WYSIWYG.attach('all'、mysettings);

これは私が使用していたもので、コンテンツ/フォームが動的に読み込まれなかった場合にうまく機能しました。

ロードイベントに添付されているソースコードを見てください。おそらくこれが取り付けられていない理由です。

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

WYSIWYG.attachAll(mySettings);

これは機能することがわかりました(すべてのテキストエリア)。ソースコードをもう一度見ると、DOM内のすべてのテキストエリアを検索し、イベントにアタッチされていません。

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);
}
于 2011-08-24T03:30:55.650 に答える