Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/08/2012, 17:02
ohk
 
Fecha de Ingreso: abril-2012
Mensajes: 8
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Existe forma de reemplazar el showModalDialog() por window.open()

Lo solucione de la siguiente manera y sin utilizar showModalDialog().

Vamos a interpretar el uso de dos archivos.

El Inicial y el Invocado.

En el Inicial tengo algo un tanto complejo en el codigo donde utilizo un contador para repetir un <select> porque requiero varios del mismo.

Aca un ejemplo visual:



Como señala en la imagen, primero se debe seleccionar una cuenta y luego hacer doble clic en el textfield de Auxiliar. Con el codigo javascript envio los valores de la cuenta y tengo una ventana como esta:



Como señala en la imagen, se selecciona y se acepta.
Y se obtiene algo como esto:



Y lo que buscaba lo conseguí.

Codigo ventana Inicial:

Tenemos el textfield donde se hace doble clic, este recupera el valor del id del <select> y ejecuta una funcion.

Código:
<input type="text" name="id_contable_auxiliar[<?php echo $contador; ?>]" id="id_contable_auxiliar[<?php echo $contador; ?>]" onDblClick="javascript:abrir('code/contable/popup.php?id_contable_plan_cuentas=',<?php echo $contador; ?>);">
Aca la funcion invocada:

Código:
<script>
function abrir(url, posicion) // windows open
{
	var posicion = posicion;
	var url = url;
	var formulario;
	var destino = url;
	//var c = 1;
	//destino = destino.concat(c);
	var destin;
	var desti;
	//alert(destino);
	destin = document.getElementById('id_contable_plan_cuentas['+posicion+']');
	//alert(posicion);	
	var real;
	real = destin.value;
	var valor = '&valor=';
	//alert(real);
	desti = url.concat(real,valor,posicion);
	//alert(desti);
	window.open(desti,""," width = 450,height=350,scrollbars=NO");
	
	document.formID.id_contable_auxiliar['+posicion+'].value = real ;
}
</script>
Tiene varias lineas en comentario por las pruebas que realizaba.

Ahora el codigo de la ventana Invocada:

Las variables que recibo del GET enviado.

Código:
$valor = addslashes(trim($_GET['valor']));
El boton:

Código:
<input type="button" onClick="Devuelve(<?php echo $valor; ?>)" value="Seleccionar Auxiliar">
Y por utlimo la funcion encargada de devolver el valor:

Código:
<SCRIPT>
//aqui le devolvemos los datos a la ventana padre
function Devuelve(valor){
var valor = valor;
var destin = document.getElementById('select');
var real = destin.value;
alert(real);
self.opener.document.all('id_contable_auxiliar['+valor+']').value = real;
//window.opener.document.formID.id_contable_auxiliar['+valor+'].value=real;
window.close();
}
</SCRIPT>
Listo es todo.

Si tienen dudas pregunten, trataré de responder.

Última edición por ohk; 21/08/2012 a las 17:05 Razón: Mejora visual