Cambiar el valor de un Telerik RadEditor con Javascript / jQuery
-
22-07-2019 - |
Pregunta
Estoy tratando de limpiar manualmente el HTML de un Telerik RadEditor con Javascript, pero parece que no puedo encontrar el lugar correcto para almacenar el valor para que se guarde en la publicación.
Aquí está el JS que tengo:
$(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();
});
¿Hay alguna forma de acceder al objeto Telerik RadEditor con JavaScript (usando OnClientCommandExecuted ()
?) para poder acceder a .get_html ()
y .set_html (valor)
funciones? Si no, ¿qué valores debo establecer antes de volver a publicar?
Solución
¿Por qué no utiliza filtros de contenido personalizados .
Otros consejos
Ah, acabo de descubrir la función $ find ()
incorporada de Telerik: http://www.telerik.com/help/aspnet-ajax/editor_getingreferencetoradeditor.html
Editar: aquí está la solución que se me ocurrió para mi función 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;
}
}
};