1

ASP.netカスタムバリデーターコントロールを使用してHTMLエディターのコンテンツを検証しようとしています。アイデアは、いくつかのコンテンツが入力されていることを確認することです-必須のフィールドバリデーターが機能するのと同じ方法です。

ClientValidationFunction = "SomeFunction"で、この関数を参照します。

 function SomeFunction(source, args)
    {
        var editor = $find("<%=htmlEditor.ClientID%>");
        var content = editor.get_content();
        var isValid = content.length > 0;
        editor.set_content(content); 
        args.IsValid = isValid;
    }

取得後にコンテンツを設定したのは、これがコンテンツをエディターに再登録するためのハックだからです。何らかの理由で、2回目のポストバックの試行でコンテンツをリセットしない場合(検証された後)、最初の試行からの空のコンテンツが、有効なコンテンツの代わりにポストバックされます。

誰かがコンテンツをリセットせずにHTMLエディタのコンテンツをチェックする方法を知っていますか?または、フォントサイズとフォントスタイルメニューを無効にせずに、set_content()を使用してリセットした場合はどうなりますか?

4

2 に答える 2

1

前回の投稿で述べたように、set_content ハックは必要ありません。これは私のコードで、エディターが空でないことを検証するために使用します。

  <asp:CustomValidator 
                    CssClass="errorMessage" 
                    ID="HtmlEditorValidator" 
                    runat="server" 
                    ErrorMessage="Release Note cannot be empty"
                    Display="None" 
                    ControlToValidate="radEditor"
                    EnableClientScript="true"
                    ClientValidationFunction ="checkEditorNotEmpty"
                    OnServerValidate="CheckEditorNotEmptyServerSide"
                    ValidateEmptyText="true">
</asp:CustomValidator>  

function checkEditorNotEmpty(source, args)
        {
            var editor = $find("<%=radEditor.ClientID%>");
            var cont = editor.get_text();
            var isValid = cont.length > 0;
            args.IsValid = isValid;
        }

//コードビハインド:

  protected void CheckEditorNotEmptyServerSide(object sender, ServerValidateEventArgs args)
        {
            bool valid = args.Value.Length > 0;
            args.IsValid = valid;
        }

これは 9 月のリリースで動作します。11 月のリリースでのバグ修正を見逃していないことを願っています。それは非常に奇妙です。

HTH

于 2010-02-15T07:57:22.293 に答える
1

OK、Ajax Toolkit の最新リリース (2009 年 9 月) に更新することで、この問題を解決しました。

set_content() ハックは不要になりました。上記の JavaScript コードからこれを削除するだけで、カスタム バリデータが機能します。HTML エディターは、更新されたコンテンツをサーバーに渡します: "Woohoo!"

バグを修正してくれた Obout の皆さんに感謝します! :-)

于 2009-10-06T10:52:26.610 に答える