¿Como pasar el contenido de un textarea, a otro de otra pagina usando JavaScript o Jquery?

publicado por: Anonymous

Tengo una página llamada formulario.aspx, la cual contiene un formulario con el siguiente código:

<textarea name="summernote3" id="summernote" runat="server"></textarea>
<img id="Img2" alt="Editar en pantalla Completa" src="../imagenes/botones/editorpantalla.png" class="clase" onclick="ZoomEdit2('<%=summernote.ClientID %>');" />

Ésta es la función que he generado para enviar la información capturada en el textarea hacia otra página llamada editar.aspx

function ZoomEdit2(campo) {
var nw = window.open("../Plugins/editar.aspx?campo=" + campo +"","FORMATO","resizable=1,width=1100,height=600, scrollbars=1");
nw.focus();
}

En la segunda página editar.aspx, quiero obtener el valor del primer textarea y asignarlo a un otro textarea y viceversa.

Estuve intentando con algo de ajaxcontrol, pero no logro obtener los resultados deseados:

var markupStr = $('#summernote').code();
var txvalor = opener.$get('<%=request("campo")%>').control;
txvalor2.set_content(markupStr);

¿Hay alguna manera de intercambiar la información capturada en textareas y enviarlos entre determinadas páginas?

solución

Para pasar información de una página (formulario.aspx) a otra ventana que se abre desde la primera (editar.aspx), tienes varias opciones:

1) Pasar la información en el GET

De manera similar a cómo se pasa el nombre del campo, puedes pasar el valor (si no es excesivamente grande) como parte de la URL:

function ZoomEdit2(campo) {
    // obtener el valor del campo (podría hacerse de diferentes maneras)
    var valor = document.getElementById(campo).value;
    // abrir la ventana pasando los valores en la URL
    var nw = window.open("../Plugins/editar.aspx?campo=" + campo + "&valor=" + valor,"FORMATO","resizable=1,width=1100,height=600, scrollbars=1");
    nw.focus();
}

Ventajas de este método:

  • Sencillo
  • Implementación similar a la del atributo campo que ya procesas

Inconvenientes de este método:

  • Hay un límite en el tamaño del valor que puedes pasar
  • Los usuarios pueden ver el valor (no ofrece mucha privacidad ni seguridad)

2) Guardar los valores en el LocalStorage

Otra opción sería guardar el valor en el LocalStorage o el SessionStorage antes de abrir la ventana y luego leer el valor en la nueva ventana cuando se cargue.

function ZoomEdit2(campo) {
    // guardar el valor del campo en el localStorage (podría hacerse de diferentes maneras)
    localStorage.setItem('myCat', document.getElementById(campo).value );
    var nw = window.open("../Plugins/editar.aspx?campo=" + campo + "","FORMATO","resizable=1,width=1100,height=600, scrollbars=1");
    nw.focus();
}

Ventajas de este método:

  • Sencillo y fácil de implementar
  • Puedes guardar más datos de los que podrías pasar a través de la URL

Inconvenientes de este método:

  • No funcionará si el usuario tiene deshabilitadas las cookies
  • No funcionará si los protocolos no coinciden (http o https, pero no los dos)

3) Leer los datos del padre desde la ventana abierta

Como se indica en los comentarios y en otra respuesta, podrías acceder a los valores del padre usando window.parent, así desde la ventana abierta puedes leer el campo que quieras como esto:

var valorEnPadre = window.opener.document.getElementById("ID_DEL_ELEMENTO").value;

Suponiendo que el ID del elemento se ha guardado en el atributo campo entonces sería:

var valorEnPadre = window.opener.document.getElementById(campo).value;

Ventajas de este método:

  • JavaScript puro y duro sin APIs que puedan fallar ni problemas de compatibilidad con navegadores
  • No debería haber problemas de tamaño

Inconvenientes de este método:

  • Requiere que las páginas estén en un servidor (funciona con http o https pero no con file://)
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *