Avatar Image
Usuario habitual
Usuario habitual

Como puedo llamar una funcion desde el action del formulario?? le pongo el nombre de la funcion, pero no hace nada, solo me refresca la misma pagina.

Además, en ese mismo formulario, ya ocupe el evento onsubmit por eso pretendo meterlo en el action. A menos que haya otra forma.

Lo necesito para abrir una nueva ventana estilo pop-up o al menos indicarle un tamaño especifico a la siguiente ventana, pero no se en que parte debo indicarlo.

tunait
Usuario habitual
Usuario habitual

Déjame ver las dos funciones que quieres usar en el submit a ver cuál puede ser la forma más eficaz

Avatar Image
Usuario habitual
Usuario habitual

La que utilizo en onsubmit es esta, con ella no tengo problemas ya:

function VALIDA_OTROS(F)
{
if (document.getElementById('U_NumReg').value == false) { BU1=false } else { BU1=true; Asignar_Valor('U_NumReg','H_U_NumReg'); }
if (document.getElementById('U_Nombre').value == false) { BU2=false } else { BU2=true; Asignar_Valor('U_Nombre','H_U_Nombre'); }
if (document.getElementById('U_Tipo').value == false) { BU3=false } else { BU3=true; Asignar_Valor('U_Tipo','H_U_Tipo'); }
if (document.getElementById('U_Cubi').value == false) { BU4=false } else { BU4=true; Asignar_Valor('U_Cubi','H_U_Cubi'); }
if (document.getElementById('U_Jefe_G').value == false) { BU5=false } else { BU5=true; Asignar_Valor('U_Jefe_G','H_U_Jefe_G'); }
if (document.getElementById('U_Tel').value == false) { BU6=false } else { BU6=true; Asignar_Valor('U_Tel','H_U_Tel'); }
if (document.getElementById('U_Mail').value == false) { BU7=false } else { BU7=true; Asignar_Valor('U_Mail','H_U_Mail'); }

document.getElementById('From_OTROS').value= true
document.getElementById('From_MONO').value = false
document.getElementById('From_REVIS').value = false


if ( (F.Congreso.value) == false ) { B1=false } else { B1=true }
if ( (F.Autor.value) == false ) { B2=false } else { B2=true }
if ( (F.Tit_Cap.value) == false ) { B3=false } else { B3=true }
if ( (F.L_Public.value) == false ) { B4=false } else { B4=true }
if ( (F.Editorial.value) == false ) { B5=false } else { B5=true }
if ( (F.Año.value) == false ) { B6=false } else { B6=true }
if ( (F.Volumen.value) == false ) { B7=false } else { B7=true }
if ( (F.Numero.value) == false ) { B8=false } else { B8=true }
if ( (F.Paginas.value) == false ) { B9=false } else { B9=true }
if ( (F.ISBN.value) == false ) { B10=false } else { B10=true }
if ( (F.Lugar.value) == false ) { B11=false } else { B11=true }
if ( (F.Fecha.value) == false ) { B12=false } else { B12=true }

if (B1 & B2 & B3 & B4 & B5 & B6 & B7 & B8 & B9 & B10 & B11 & B12 & BU1 & BU2 & BU3 & BU4 & BU5 & BU6 & BU7)
{ alert ("todos llenos&quotGiño; return true; }
else
{ alert ("al menos un campo vacio&quotGiño; return false; }
}
</SCRIPT>



Esta la que encontre, para poder darle un tamaño a mi nueva ventana

<script>
<!--
function Abre_ventana (pagina){
ventana=window.open(pagina,"","toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=550,height=20&quotGiño;
}
-->
</script>






Y en los formularios, tengo:

<FORM name=F_Otros onsubmit= "return VALIDA_OTROS(this);" action= "Confirmacion_Datos.php" method=post>



Solo quiero saber como le hago para que cuando le de click y se abra la pagina CONFIRMACION_DATOS.PHP esta se abra pequeña, con unos cuantos datos que paso de la pag original y un par de botones??

Avatar Image
Machacateclados
Machacateclados

y cual seria la idea de que se ejecute en el action,

no entiendo, si al parecer lo que quieres es que cuando se trate de enviar la informacion del formaluario, llame a una funcion


lo puedes hacer llamando a la function desde todos lo botones de typo submit, y en el onsubmir


y ademas , puedes llamar mas de una funcion por evento solo peralas por ,


Saludos
Vhs

tunait
Usuario habitual
Usuario habitual

Así a ojo lo más sencillo que puedes hacer es esto;

Agrega la siguiente línea en la primera función y en este lugar

Codigo:

function VALIDA_OTROS(F)
{
if (document.getElementById('U_NumReg').value == false) { BU1=false } else { BU1=true; Asignar_Valor('U_NumReg','H_U_NumReg'); }
if (document.getElementById('U_Nombre').value == false) { BU2=false } else { BU2=true; Asignar_Valor('U_Nombre','H_U_Nombre'); }
if (document.getElementById('U_Tipo').value == false) { BU3=false } else { BU3=true; Asignar_Valor('U_Tipo','H_U_Tipo'); }
if (document.getElementById('U_Cubi').value == false) { BU4=false } else { BU4=true; Asignar_Valor('U_Cubi','H_U_Cubi'); }
if (document.getElementById('U_Jefe_G').value == false) { BU5=false } else { BU5=true; Asignar_Valor('U_Jefe_G','H_U_Jefe_G'); }
if (document.getElementById('U_Tel').value == false) { BU6=false } else { BU6=true; Asignar_Valor('U_Tel','H_U_Tel'); }
if (document.getElementById('U_Mail').value == false) { BU7=false } else { BU7=true; Asignar_Valor('U_Mail','H_U_Mail'); }

document.getElementById('From_OTROS').value= true
document.getElementById('From_MONO').value = false
document.getElementById('From_REVIS').value = false


if ( (F.Congreso.value) == false ) { B1=false } else { B1=true }
if ( (F.Autor.value) == false ) { B2=false } else { B2=true }
if ( (F.Tit_Cap.value) == false ) { B3=false } else { B3=true }
if ( (F.L_Public.value) == false ) { B4=false } else { B4=true }
if ( (F.Editorial.value) == false ) { B5=false } else { B5=true }
if ( (F.Año.value) == false ) { B6=false } else { B6=true }
if ( (F.Volumen.value) == false ) { B7=false } else { B7=true }
if ( (F.Numero.value) == false ) { B8=false } else { B8=true }
if ( (F.Paginas.value) == false ) { B9=false } else { B9=true }
if ( (F.ISBN.value) == false ) { B10=false } else { B10=true }
if ( (F.Lugar.value) == false ) { B11=false } else { B11=true }
if ( (F.Fecha.value) == false ) { B12=false } else { B12=true }

if (B1 & B2 & B3 & B4 & B5 & B6 & B7 & B8 & B9 & B10 & B11 & B12 & BU1 & BU2 & BU3 & BU4 & BU5 & BU6 & BU7)
{
alert ("todos llenos&quotGiño
ventana = window.open(pagina, "", "toolbar=no, location=no, directories=no, status=yes,menubar=no, scrollbars=yes,resizable=yes, width=550,height=20&quotGiño
return true;

}
else{
alert ("al menos un campo vacio&quotGiño; return false; }
}
</SCRIPT>



...y al tag de form agrégale un target a esa ventana

<FORM name=F_Otros onsubmit= "return VALIDA_OTROS(this);" action= "Confirmacion_Datos.php" method=post target="ventana">

Creo que así te debería de funcionar ok (la segunda función no hace falta que la pongas pues se incluye dentro de la primera)

por cierto, te sugiero le pongas las comillas dobles a los valores de los atributos.

un saludo
tunait
Usuario habitual
Usuario habitual

hum... no me deja editar mi mensaje, cuidado que hay algo que debes cambiar en la línea que se agrega a la función

cambia esto

ventana = window.open(pagina, "", "toolbar=no, location=no, directories=no, status=yes,menubar=no, scrollbars=yes,resizable=yes, width=550,height=20&quotGiño

por esto

ventana = window.open("", "", "toolbar=no, location=no, directories=no, status=yes,menubar=no, scrollbars=yes,resizable=yes, width=550,height=20&quotGiño

tunait
Usuario habitual
Usuario habitual

Qué pesaditos son los caretos

ventana = window.open("", "", "toolbar=no, location=no, directories=no, status=yes,menubar=no, scrollbars=yes,resizable=yes, width=550,height=20")

asegúrate de que esté cerrado el paréntesis del final

Avatar Image
Usuario habitual
Usuario habitual

ok, mi pregunta ahora es para que es el target? Segun yo, me ignora el action del formulario o no?? y ademas, se supone que los datos de la primer pagina los estaba pasando a la segunda, y al abrirla normalmente (de tamaño grande) si los imprimia con PHP, pero ahora, aunque ya me abre la ventana pequeña, no puedo imprimir los valores de los campos de la pagina de la que vengo.

Esto es lo que esta en la pagina de "Confirmacion_Datos.php":







<body><?php

echo "IMPRIME ESTO!!!!";
if ($From_OTROS == true)
{
echo "Otros True";
echo "<p> $H_U_NumReg </p>";
echo "<p> $H_U_Nombre </p>";
echo "<p> $H_U_Tipo </p>";
echo "<p> $H_U_Cubi </p>";
echo "<p> $H_U_Jefe_G </p>";
echo "<p> $H_U_Tel </p>";
echo "<p> $H_U_Mail </p>";
}
else
{
if ($From_MONO == true)
{
echo "MONOGRAFIAS True";
echo "<p> $H_U_NumReg2 </p>";
echo "<p> $H_U_Nombre2 </p>";
echo "<p> $H_U_Tipo2 </p>";
echo "<p> $H_U_Cubi2 </p>";
echo "<p> $H_U_Jefe_G2 </p>";
echo "<p> $H_U_Tel2 </p>";
echo "<p> $H_U_Mail2 </p>";
}
else
{
if ($From_REVIS == true)
{
echo "REVISTAS True";
echo "<p> $H_U_NumReg3 </p>";
echo "<p> $H_U_Nombre3 </p>";
echo "<p> $H_U_Tipo3 </p>";
echo "<p> $H_U_Cubi3 </p>";
echo "<p> $H_U_Jefe_G3 </p>";
echo "<p> $H_U_Tel3 </p>";
echo "<p> $H_U_Mail3 </p>";
}
}
}

echo $Congreso;

?>




De hecho el php si lo acepta porque el primer echo si lo hace!
tunait
Usuario habitual
Usuario habitual

¿Qué es lo que quieres que te cargue en la ventana popup?

Entendí que querías que el resultado de enviar el form se abriera dentro de la popup.

Detalla un poco mejor lo que pretendes lograr exactamente y así daremos menos vueltas

Avatar Image
Usuario habitual
Usuario habitual

OK, lo que quiero que se cargue, son los valores de los campos que tengo en dos formularios dentro de la pagina1. Ponerlos en la pagina, en forma de tabla o algo asi, solo poner los valores como:

Nombre: fulano de tal
Direccion: bla bla

Para que puedan ver si estan correctos y si no, que se regrese a la pagina original ( la que queda atras de la chiquita).

Arriba puse el codigo que tengo en la pagina que se abre en chiquito, y mi problema es que cuando la abro en chiquito no me imprime las variables de los echo y si la abro normal, solo con el action si lo hace.

Lo siento si no me explico muy bien. Espero me hayas entendido Angelito

Avatar Image
Usuario habitual
Usuario habitual

Ya se, creo q asi es mas sencillo y directo:

Originalmente, ya que habia regresado el true de la funcion que valida, hacia el action y se iba a Confirmacion_Datos.php. Pero como es poquita informacion la que quiero mostrar me sobraba una gran parte de la pagina, entonces, lo unico que quiero es que haga exactamente lo que hace en tamaño normal, pero que la ventana aparesca en chiquito ok.

Segun yo, ya casi casi esta, mi problema ahora es que cuando la abro en chiquito no imprime las variables, no se si no se las estoy mandando a la ventana pop up??

tunait
Usuario habitual
Usuario habitual

...dime si lo que pretendes hacer es esto:

Tienes un form y lo que quieres es que antes de ser enviado a su lugar definitivo se abra una ventana popup con una tabla que muestre los datos introducidos y pida confirmación. En caso de ser correctos que se envíen esos datos.

¿Es así? ¿por eso estás usando dos forms y copias los valores de uno en el otro?

Avatar Image
Usuario habitual
Usuario habitual

si, exactamente, los recibo en una pagina, los mano a un popup para que el usuario verifique si son correctos, si no, se cierra esa y los corrige en la original, si si son correctos entonces los escribe en un archivo.

tunait
Usuario habitual
Usuario habitual

ok, suponiendo que lo haya entendido correctamente te cuento que se puede hacer de una forma menos laboriosa y con menos código y un sólo formulario.

Te pongo un ejemplo para que te bases en él. Si hace lo que pretendes no tendrás más que adaptarlo a tu formulario:

El ejemplo consta de dos páginas (pruébalo tal cual te lo pongo en documentos nuevos)

página1 con el formulario

Codigo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Formulario</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
<!--
var formu
function validaCampos(f){
mensaje = "por favor rellene todos los campos"
if(f.Nombre.value == ""){
alert(mensaje)
return false
}
if(f.Apellido.value == ""){
alert(mensaje)
return false
}
if(f.Email.value == ""){
alert(mensaje)
return false
}
formu = f
ventana = window.open('','ventana','width= 400, height=400')
}
function enviaForm(){
formu.action = "javascript:alert('me envío!')"
formu.target = "_self"
formu.submit()

}
//-->
</script>
</head>

<body>
<form name="form1" id="form1" method="post" action="kssaformconfirma.php" target="ventana" onsubmit="return validaCampos(this)">
Nombre
<input name="Nombre" type="text" id="Nombre" />
<br />
Apellido
<input name="Apellido" type="text" id="Apellido" />
<br />
e-mail
<input name="Email" type="text" id="Email" />
<br />
<input type="submit" value="Enviar" />
</form>
</body>
</html>


Página2 (kssaformconfirma.php) confirma los datos

Codigo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Confirmar datos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<strong>Por favor, confirme si los datos son correctos</strong>
<p>
<?php
foreach($_POST as $nombre => $valor){
echo $nombre.": ".$valor."<br />";
}
?>
</p>
<p>
<input type="button" value="Son correctos. Enviar" onclick="opener.enviaForm(); self.close()" />
<input type="button" value="Hacer cambios. Cancelar" onclick="self.close()" />
</p>
</body>
</html>


El sistema es el siguiente:

Hay un sólo form que lleva una acción inicial que envía a la página de confirmación y un target a la ventana popup.

Al submitir el formulario llama a una función js que verifica que estén todos los campos rellenos y en caso afirmativo lanza el form en la ventana popup a la página de confirmación (mediante submit).

En la popup muestra los datos con dos botones: aceptar y cancelar.
Cancelar cierra la popup sin hacer nada
Aceptar llama a otra función que está en la página con el formulario. Esta función se encarga de cambiar la acción y el target del formulario y acto seguido lo envía (dentro de la propia ventana del form)

En el ejemplo cambia la acción por un alert js para que veas el comportamiento, obviamente habrás de cambiar ese valor por el de la página a donde deba enviarse definitivamente el formulario.

me refiero a esta línea
formu.action = "javascript:alert('me envío!')"

deberás cambiarla por algo tipo ...
formu.action = "paginadefinitiva.php"

Yá me contarás

Un saludo :c)
tunait
Usuario habitual
Usuario habitual
Escrito originalmente por tunait


Yá me contarás



...pues no, parece que no me cuenta nada, ni si fue bien ni si fue mal
Avatar Image
Moderador
Moderador
Escrito originalmente por tunait
Escrito originalmente por tunait


Yá me contarás



...pues no, parece que no me cuenta nada, ni si fue bien ni si fue mal


ja, ja tunait que estos no son los fdw Sonrisa
De interés Público
NO AGREGARME COMO AMIGO, gracias
Asuntos claros en los temas
Consultas en temas no afines serán borradas
Tratemos de expresarnos bien, que así da gusto leer


tunait
Usuario habitual
Usuario habitual
Escrito originalmente por gaf

ja, ja tunait que estos no son los fdw Sonrisa


jeje ... no creas, Gaf, que allá pasa exactamente lo mismo Divertido
Avatar Image
Usuario habitual
Usuario habitual

Hola!! lo siento pero ya no tuve internet en estos dias!! Enfurruñado y gracias si me sirvio bastante!!! Thank's!!!! Rebotado

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 07/Abr/2006, 21:53
Yoshi_AFCL13kApr/06
Por: , el 10/Abr/2004, 23:56
naranjametallic02kApr/04