2009-10-05 38 views
1

我試圖驗證使用ASP.net自定義驗證器控件的HTML編輯器的內容。這個想法是檢查一些內容是否已經被輸入 - 與需要的字段驗證器工作的方式相同。ASP.net中的HTML編輯器中的錯誤Ajax工具箱

在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; 
    } 

,我得到它後設置的內容的原因,是認爲這是一個黑客獲取內容在重新註冊編輯。出於某種原因,如果我不重置第二次嘗試回發的內容 - 一旦它被驗證 - 第一次嘗試的空白內容將被取回到有效內容中。

有誰知道如何檢查HTML編輯器的內容,而不必重置內容?或者,如果使用set_content()進行重置,而沒有停用字體大小和字體樣式菜單?

回答

1

好的,通過更新到Ajax Toolkit的最新版本(2009年9月)來解決這一問題。

set_content()hack不再是必需的。只需從上面的JavaScript代碼中刪除這個,並且自定義驗證器將工作。 HTML編輯器現在將更新後的內容傳遞給服務器:「嗚呼!」

感謝Obout的傢伙修復bug! :-)

1

正如我在我以前的文章中所說的,你不應該需要set_content hack。這是我的代碼,我用它來驗證該編輯器不爲空:

<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月發行,我希望他們還沒有錯過Novemeber發佈的錯誤修復:那會很奇怪。

HTH

相關問題