Изменение значения Telerik RadEditor с помощью Javascript/jQuery

Я пытаюсь вручную очистить HTML-код Telerik RadEditor с помощью Javascript, но я не могу найти правильное место для хранения значения, чтобы оно сохранялось при обратной отправке.

Вот 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();
});

Есть ли способ получить доступ к объекту Telerik RadEditor с помощью JavaScript (используя OnClientCommandExecuted()?), чтобы я мог получить доступ к функциям .get_html() и .set_html(value)? Если нет, то какие значения мне нужно установить перед публикацией?


person travis    schedule 05.08.2009    source источник


Ответы (2)


Почему бы вам не использовать настраиваемые фильтры содержимого.

person W3Max    schedule 07.08.2009
comment
Удивительно, я даже не знал, что такое вообще возможно. Я думаю, что может быть немного поздно реорганизовывать мое текущее решение, но это определенно пригодится в будущем, спасибо! - person travis; 10.08.2009

А, только что обнаружил встроенную функцию $find() Telerik: 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;
        }
    }
};
person travis    schedule 05.08.2009