我正在尝试使用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;
}
我在获取内容之后设置内容的原因是,这是让内容在编辑器中重新注册的黑客攻击。出于某种原因,如果我在第二次尝试回复时没有重置内容 - 一旦它被验证 - 从第一次尝试开始,空内容将被回发而不是有效内容。
有没有人知道如何检查HTML编辑器的内容,而不必重置内容?或者,如果使用set_content()重置它,没有取消激活字体大小和字体样式菜单?
答案 0 :(得分:1)
好的,通过更新到Ajax Toolkit的最新版本(2009年9月)来解决这个问题。
不再需要set_content()hack。只需从上面的javascript代码中删除它,自定义验证器就可以了。 HTML编辑器现在将更新的内容传递给服务器:“Woohoo!”
感谢Obout的工作人员修复错误! : - )
答案 1 :(得分: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