2009-08-05 3 views
1

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

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

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

ответ

4

Почему бы вам не использовать custom content filters.

+0

Удивительный, я понятия не имел, что это было возможно. Я думаю, что может быть немного поздно реорганизовать мое текущее решение, но это, безусловно, пригодится в будущем, спасибо! – travis

0

Ах, только что обнаружил Telerik встроенный в $find() функции: http://www.telerik.com/help/aspnet-ajax/editor_getingreferencetoradeditor.html

Edit: вот решение, которое я придумал для моей 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; 
     } 
    } 
};