使用 Javascript/jQuery 更改 Telerik RadEditor 的值

Posted

技术标签:

【中文标题】使用 Javascript/jQuery 更改 Telerik RadEditor 的值【英文标题】:Changing the value of a Telerik RadEditor with Javascript/jQuery 【发布时间】:2010-11-17 01:39:11 【问题描述】:

我正在尝试使用 javascript 手动清理 Telerik RadEditor 的 html,但我似乎无法找到存储该值的正确位置,以便在回发时将其保存。

这是我的 JS:

$(function ()     
    jQuery.fixHash = function ($html)       

        // modify $html

        return $html;
    ;

    $("#adminEditingArea input[id$='SaveButton']").unbind("click").click(function () 
        $("iframe[id$='_contentIframe']").trigger("save");

        // call .net postback

        return false;
    );

);

var editorSaveEventInit = false;
function InitSaveEvent() 
    if (!editorSaveEventInit) 
        var $EditFrames = $("iframe[id$='_contentIframe']");
        if ($EditFrames && $EditFrames.length > 0) 
            $EditFrames.bind("save", function (e) 
                var $thisFrame = $(this);
                var thisFrameContents = $thisFrame.contents();
                if (thisFrameContents) 
                    var telerikContentIFrame = thisFrameContents.get(0);
                    var $body = $("body", telerikContentIFrame);
                    var html = $.fixHash($body).html();
                    $body.html(html);

                    // also tried storing the modified HTML in the textarea, but it doesn't seem to save:
                    //$thisFrame.prev("textarea").html(encodeURIComponent("<body>" + html + "</body>"));
                
            );
            editorSaveEventInit = true;
        
    
;

$(window).load(function () 
    InitSaveEvent();
);

有什么方法可以使用 JavaScript 访问 Telerik RadEditor 对象(使用OnClientCommandExecuted()?),以便我可以访问.get_html().set_html(value) 函数?如果没有,在回发之前我需要设置什么值?

【问题讨论】:

【参考方案1】:

你为什么不使用custom content filters。

【讨论】:

太棒了,我什至不知道这些是可能的。我认为重构我当前的解决方案可能有点晚,但将来肯定会派上用场,谢谢!【参考方案2】:

啊,刚刚发现Telerik内置的$find()函数:http://www.telerik.com/help/aspnet-ajax/editor_getingreferencetoradeditor.html

编辑:这是我为InitSaveEvent() 函数提出的解决方案:

var editorSaveEventInit = false;
function InitSaveEvent() 
    if (!editorSaveEventInit) 
        var $EditFrames = $("iframe[id$='_contentIframe']");
        if ($EditFrames && $EditFrames.length > 0) 
            $EditFrames.bind("save", function (e) 
                var $thisFrame = $(this);
                var thisFrameContents = $thisFrame.contents();
                if (thisFrameContents) 
                    var telerikContentIFrame = thisFrameContents.get(0);
                    var $body = $("body", telerikContentIFrame);
                    var html = $.fixHash($body).html();
                    // SOLUTION!
                    var $radeditor = $thisFrame.parents("div.RadEditor.Telerik:eq(0)");
                    var editor = $find($radeditor.attr("id"));
                    editor.set_html(html);
                    // ☺
                
            );
            editorSaveEventInit = true;
        
    
;

【讨论】:

以上是关于使用 Javascript/jQuery 更改 Telerik RadEditor 的值的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 扩展中使用 javascript/jquery 访问框架的 DOM

使用 Javascript/jQuery 更改 Telerik RadEditor 的值

使用 Javascript/jQuery 和 CSS 更改 PNG 颜色

使用 Javascript/jQuery 更改表单响应

javascript jQuery使用.attr()方法更改href属性

更改跨度文本值 JavaScript/jQuery