Telerik RadEditor - 我可以在皮肤文件中注册客户端On Client Submit事件吗?

时间:2014-10-14 12:37:18

标签: telerik client-side radeditor

Telerik RadEditor存在一个已知问题导致奇数字符插入,如documented here

解决方法需要插入客户端脚本来去除OnClientSubmit事件中的违规字符。

我们在很多地方使用这个控件,并且在我们的皮肤文件中定义了三种样式。我们还在RadEditor中从我们称为RichEdit的自定义控件派生自定义控件。

问题是 - 这种方法是否可以保证我们的RichEdit控件的所有实例都能收到所需的客户端事件?

1)在RichEdit.cs OnLoad中,注册包含所需javascript函数的客户端脚本块 2)在皮肤文件中,将所需的OnClientSubmit方法调用添加到每个皮肤?

所以 - 它会起作用吗?如果没有,我需要做什么?

1 个答案:

答案 0 :(得分:-1)

答案是肯定的。

在页面加载部分中添加对此方法的调用:

    private void AddRichEditGarbageCharacterWorkaround()
    {
        string scriptName = "RadEditorOnClientSubmit";
        Type csType = GetType();

        ClientScriptManager csm = Page.ClientScript;
        if (!csm.IsClientScriptBlockRegistered(csType, scriptName))
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<script type=\"text/javascript\">");
            sb.Append("\tfunction RadEditorStripGarbage(editor, args) {");
            sb.Append("\t\tvar html = editor.get_html();");
            sb.Append("\t\thtml = html.replace(/\u200b/g, \"\");");
            sb.Append("\t\teditor.set_html(html);");
            sb.Append("\t\t}");
            sb.Append("</script>");

            csm.RegisterClientScriptBlock(csType, scriptName, sb.ToString());
        }
    }

并将其添加到皮肤:

<nt:RichEdit runat="server" SkinID="SpellCheckOnly" ...
OnClientSubmit="RadEditorStripGarbage" >

成功地将代码和钩子添加到每个实例。