Buenas noches:
Estoy consciente de que el título de mi consulta no resulta claro pero la verdad no se me ocurrió otra forma. Les cuento.
Tengo una página en ASP llamada
bateas.asp.
Ahí tengo un pequeño formulario con un campo input que muestra el código de la batea a utilizarse, de esta forma
Cita: <%
Temp="Select * From Bateas Where Estado=FALSE"
Tabla1.Open Temp, Conexion
arrDBDataBateas=Tabla1.GetRows()
Tabla1.Close
%>
<tr>
<td class="texto_normal">
Batea asignada : <input type="text" name="batea" id="batea" size="5" class="texto_normal_sinmarco" value="<%= arrDBDataBateas(1,0) %>" readonly>
<input type="text" name="cantidad" id="cantidad" size="5" class="texto_normal" onKeyPress="return acceptNum(event);" onChange="ingresarBatea(this.value);"> ovas
</td>
</tr>
En esta misma parte de la página, tengo una sección de la tabla con este código
Cita: <td valign="top" class="texto_normal" id="detalles"></td>
La estructura es la de una tabla principal con 2 celdas. La de la izquierda contiene una tabla donde están los campos del formulario (hay un par más pero no interesa de momento) y la celda de la derecha mostrará los resultados luego de asignar un valor a la batea en cuestión.
Para crear este listado-resultado, utilizo este código con el evento
onChange que invoca a la función
ingresarBatea() cuyo código es el siguiente:
Cita: function ingresarBatea(valor)
{
var req = false;
var lote=document.getElementById("lotes").value;
var batea=document.getElementById("batea").value;
if (window.XMLHttpRequest) // For Safari, Firefox, and other non-MS browsers
{
try
{req = new XMLHttpRequest();}
catch (e)
{req = false;}
}
else if (window.ActiveXObject) // For Internet Explorer on Windows
{
try
{req = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{
try
{req = new ActiveXObject("Microsoft.XMLHTTP");}
catch (e)
{req = false;}
}
}
//req.expires=-1;
var element = document.getElementById("detalles");
if (!element)
{alert("El ID " + id + " enviado a clientSideInclude es erróneo. Se necesita un elemento DIV o SPAN con este ID en el módulo."); return;}
if (req)
{
// Synchronous request, wait till we have it all
url="bateas.asp?op=ing&clase=batea&lote="+lote+"&b atea="+batea+"&cantidad="+valor;
req.open('GET', url, false);
req.send(null);
element.innerHTML = req.responseText;
document.getElementById("cantidad").value="";
document.getElementById("cantidad").focus();
}
else
{element.innerHTML = "Lo sentimos pero su navegador no soporta objetos XMLHttpRequest. Esta página requiere Internet Explorer 8 o superior para Windows, Firefox para cualquier sistema, o Safari. Otros navegadores compatibles también pueden ser utilizados.";}
}
Cómo pueden ver, el código llama a la misma página
bateas.asp y ejecuta una parte de código ASP (están agrupados por
select case) y procesa todo normal. Luego de eso vuelvo a llamar a otra sección de la página en cuestión para que muestre un listado. Y es ahí el detalle de mi consulta.
Cuando muestro el listado en la celda
detalles de la tabla principal, necesito actualizar el campo
batea del formulario inicial. Todo se ejecuta, vía Ajax, en la misma página.
He probado
parent.document.getElementById("batea").value=NUEV O VALOR
y
opener.document.getElementById("batea").value=NUEV O VALOR
sin mayor fortuna.
¿Cómo podría actualizar el campo INPUT desde una sección de la página cargada vía Ajax?
En la captura se podrá ver, me parece, todo un poco más claro. Lo marcado con
ROJO corresponde al campo input que deseo actualizar, y lo marcado con
AMARILLO corresponde a la celda de la tabla principal donde cargo el listado mediante Ajax.
Desde ya les quedo muy agradecido por el apoyo que me puedan brindar.
Un saludo cariñoso y cordial desde Lima, Perú
SOLUCIONADO
Simplemente bastó con utilizar layers en vez de celdas
Cita: <td valign="top">
<div class="texto_normal" id="detalles"></div>
</td>