2009-10-05 58 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

相关问题