2009-08-05 12 views
1

Ich versuche, den HTML-Code eines Telerik RadEditor mit Javascript manuell zu säubern, aber ich kann nicht den richtigen Ort finden, um den Wert zu speichern, damit es gespeichert wird zurück schreiben.Ändern des Wertes eines Telerik RadEditor mit Javascript/jQuery

Hier ist die JS Ich habe:

$(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(); 
}); 

Gibt es eine Möglichkeit, die Telerik RadEditor Objekt mit JavaScript den Zugriff (OnClientCommandExecuted() mit?), So dass ich die .get_html() und .set_html(value) Funktionen zugreifen kann? Wenn nicht, welche Werte muss ich vor dem Zurücksetzen einstellen?

Antwort

4

Warum nicht custom content filters verwenden.

+0

Ehrfürchtig, ich hatte keine Ahnung, dass das überhaupt möglich war. Ich denke, es könnte etwas spät sein, meine derzeitige Lösung umzuformen, aber das wird in Zukunft definitiv nützlich sein, danke! – travis

0

Ah, gerade entdeckt Telerik eingebauten in $find() Funktion: http://www.telerik.com/help/aspnet-ajax/editor_getingreferencetoradeditor.html

Edit: hier ist die Lösung kam ich mit meiner InitSaveEvent() Funktion:

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; 
     } 
    } 
}; 
Verwandte Themen