Quería utilizar un editor de texto enriquecido para un área de texto dentro de un panel de actualización.TinyMCE con AJAX (Panel de actualización) nunca tiene un valor
me encontré con este post: http://www.queness.com/post/212/10-jquery-and-non-jquery-javascript-rich-text-editors a través de esta pregunta: Need ASP.Net/MVC Rich Text Editor
decidió ir con TinyMCE como lo hacía antes en situaciones no AJAX, y dice que en esa lista es compatible con AJAX. Bien, hago lo bueno ol tinyMCE.init({ //settings here });
Pruébalo y desaparece después de hacer una actualización del panel de actualización. Me imagino a partir de una pregunta aquí que debería estar en la función page_load
por lo que se ejecuta incluso en las devoluciones de datos asincrónicas. Bien, hazlo y el panel se queda. Sin embargo, al tratar de enviar el valor de mi área de texto, el texto siempre aparece como vacío porque mi validador de formularios siempre dice "Debes ingresar una descripción" incluso cuando ingreso texto en él. Esto ocurre la primera vez que se carga la página y después de que se hayan realizado las devoluciones de datos asincrónicas en la página.
Muy bien Me parece esto http://www.dallasjclark.com/using-tinymce-with-ajax/ y Can't post twice from the same AJAX TinyMCE textarea. Intento agregar este código en la función de carga de mi página justo después del tinyMCE.init. Al hacer esto, se rompe toda mi invocación de jquery también en la página_carga después de ella, y todavía tiene el mismo problema.
Todavía soy bastante principiante con el scripting del lado del cliente, así que tal vez deba poner el código en un lugar diferente que page_load? No estoy seguro de que las publicaciones que vinculé no sean una pista sobre dónde poner ese código.
Mi Javascript:
<script type="text/javascript">
var redirectUrl = '<%= redirectUrl %>';
function pageLoad() {
tinyMCE.init({
mode: "exact",
elements: "ctl00_mainContent_tbDescription",
theme: "advanced",
plugins: "table,advhr,advimage,iespell,insertdatetime,preview,searchreplace,print,contextmenu,paste,fullscreen",
theme_advanced_buttons1_add_before: "preview,separator",
theme_advanced_buttons1: "bold,italic,underline,separator,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,separator,styleselect,formatselect",
theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,separator,removeformat,cleanup,charmap,search,replace,separator,iespell,code,fullscreen",
theme_advanced_buttons2_add_before: "",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
extended_valid_elements: "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
paste_auto_cleanup_on_paste: true,
paste_convert_headers_to_strong: true,
button_tile_map: true
});
tinyMCE.triggerSave(false, true);
tiny_mce_editor = tinyMCE.get('ctl00_mainContent_tbDescription');
var newData = tiny_mce_editor.getContent();
tinyMCE.execCommand('mceRemoveControl', false, 'your_textarea_name');
//QJqueryUI dialog stuff
}</script>
Ahora mi código actual no tiene la tinyMCE.execCommand("mceAddControl",true,'content');
cual también que se debe añadir una pregunta indicada. Intenté agregarlo pero, una vez más, no estaba seguro de dónde ponerlo y simplemente ponerlo en la carga de la página no pareció tener ningún efecto.
el control de cuadro de texto:
<asp:TextBox ID="tbDescription" runat="server" TextMode="MultiLine"
Width="500px" Height="175px"></asp:TextBox><br />
¿Cómo puedo obtener estos valores para que el código subyacente puede conseguir realmente lo que se escribe en el área de texto y mi validador no se van a plantear como decir que está vacío? Incluso después de las devoluciones de datos asincrónicas, ya que tengo varios botones en el formulario que lo actualizan antes del envío real.
Gracias!
Editar: Para mayor claridad que tiene la validación de formularios en el back-end, así:
If tbDescription.Text = "" Or tbDescription.Text Is Nothing Then
lblDescriptionError.Text = "You must enter a description."
isError = True
Else
lblDescriptionError.Text = ""
End If
Y este error siempre hará que el mensaje de error que se dispalyed.
Editar: horas
bien estoy desesperando aquí, he gastado en esto. Por fin encontré lo que pensaba ser un ganador en el intercambio de expertos, que establece lo siguiente (había una parte acerca de codificar el valor en XML, pero yo saltamos): http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_25059848.html
Para cualquier persona que quiera usar TinyMCE con AJAX.Net:
Anexar comenzar/manipuladores fin a la solicitud objeto AJAX.Estos le quite el control de TinyMCE antes de enviar los datos (Begin), y se recrearán el control TinyMCE (final):
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args) { var edID = "<%=this.ClientID%>_rte_tmce"; // the id of your textbox/textarea. var ed = tinyMCE.getInstanceById(edID); if (ed) { tinyMCE.execCommand('mceFocus', false, edID); tinyMCE.execCommand('mceRemoveControl', false, edID); } }); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) { var edID = "<%=this.ClientID%>_rte_tmce"; var ed = tinyMCE.getInstanceById(edID); if (ed) { tinyMCE.execCommand('mceAddControl', false, edID); } });
Cuando el usuario cambia/difumina desde el control TinyMCE, queremos asegurarnos de que la área de texto/cuadro de texto se actualiza correctamente:
ed.onChange.add(function(ed, l) { tinyMCE.triggerSave(true, true); });
Ahora me han tratado este código de ponerlo en su propia etiqueta de script, poniendo al comenzar y solicitudes extremo en sus propias etiquetas de script y poner el ed.onChange en el page_load, poniendo todo en la página_carga, y poniendo los 3 en su propia etiqueta de script En todos los casos, nunca funcionó, e incluso algunas veces rompió el jquery que también está en mi page_load ... (y sí, cambié el código anterior para que se ajuste a mi página)
¿Alguien puede hacer que esto funcione u ofrecer una solución?
El código
He visto ese hilo y lo he hecho, si lees la respuesta debajo de la respuesta marcada, dice que puedes registrar el script de inicio o ponerlo en la función page_load JavaScript. Elegí este último y funciona porque no estoy teniendo el mismo problema que esa persona.Esa persona pierde el control después de la devolución, no tengo ese problema, mi problema es que incluso antes de una única devolución (y después) cuando llene el área de texto e intento enviar, me está diciendo que tbDescription.text esta vacio. – SventoryMang