Foros del Web » Programando para Internet » Javascript »

Problema con el onsubmit no se ejecuta - Ayuda

Estas en el tema de Problema con el onsubmit no se ejecuta - Ayuda en el foro de Javascript en Foros del Web. saludos ante todos bueno mi problema es este. tengo un formulario de registro y la cabezera del formulario es este: <form name="subtipoanun" method="POST" action="./contenido/anuncio/grabaranun1.php" target="ventana" ...
  #1 (permalink)  
Antiguo 08/04/2008, 08:48
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
De acuerdo Problema con el onsubmit no se ejecuta - Ayuda

saludos ante todos bueno mi problema es este. tengo un formulario de registro y la cabezera del formulario es este:

<form name="subtipoanun" method="POST" action="./contenido/anuncio/grabaranun1.php" target="ventana" class="frmnewanun" nSubmit="popUpsave2('./contenido/anuncio/grabaranun1.php', 'ventana', '300','300','0')">

"""""""""""""los campos no importa""""""""""""""""""""""""""""""""


<button type="button" name="btn_modificar" class="botones_sis" onclick="validaropt(this.form);"><img src="../iconos/grabar.png" border="0" />Guardar</button>

</form>

ahora bueno el problema es que la ventana que tiene que abrir con el onsubmit no se ejecuta por lo que e visto es por el tipo de boton si lo le cambio la propiedad type="button" a type="submit" si se habre en una ventanita pero no me respeta la validacion de los cambos que hay(validaropt(this.form))


este es el codigo javascrip dpa abrir una ventanidad

function popUpsave2(URL,name,w,h,s)
{
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;

day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + name + "', 'toolbar=0,scrollbars="+s+",left="+winl+",top="+wi nt+",location=0,statusbar=0,menubar=0,resizable=1, width="+w+",height="+h+"');");
//opener.document.location.reload();
}



ahora mi funcion de validacion creo que no importa mostralo por que no afecta creo...



.... bueno en si es necesario que haga ese onsudmit por que ahi va salir como respueesta si graba o no en la base de datos, es php y hay varios condiciones con mensajes y todo eso(si en caao no conecta --mensaje, si no graba bien --- mensaje y etc de mensajes) los cuales e van a tener que mostrar en la ventanita que se genera con el onsubmit.







espero me aya dejado entender , necesito esa ayuda Plis

Como soluciono este problema que alternativas hay..
  #2 (permalink)  
Antiguo 08/04/2008, 08:51
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

no se si será que te falta la o de onSubmit en la linea del form...
  #3 (permalink)  
Antiguo 08/04/2008, 08:57
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

no bro no es eso
  #4 (permalink)  
Antiguo 08/04/2008, 08:58
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

al parecer tiene que ver de con el boton el tipo de boton que tengo ahora si mi validacion esta bien si pasa las condiciones se ejecuta esto

current_form.submit()
  #5 (permalink)  
Antiguo 08/04/2008, 08:59
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

donde curret_formt es una variables que tiene el nombre del formulario
  #6 (permalink)  
Antiguo 08/04/2008, 09:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Problema con el onsubmit no se ejecuta - Ayuda

Primero onSubmit solo se ejecuta cuando se hace el submid (mandar enviar) del form, luego si el boton no es de tipo submid, no manda el formulario por lo que no se produce el evento onSubmid.

El problema de validar desde onClick de un boton de tipo submid es que no hace primero la validación y en funcion del resultado manda o no el formulario, luego tendrias que hacer la validacion antes de el submid. Rediseñando la funcion de validacion la podrias ejecutarla desde onBlur de los imputs, deberias tener el boton tipo submid escondido hasta que la validación sea correcta, en ese momento ya podrias provocar el evento onSubmid por que la validacion ya estaria hecha...

Otra alternativa dejar el boton como tipo button i desde el onClick ejecutar toda las funciones es decir:

Código:
function ValidaMandaiPop(form){

if (validaropt(form)){
 form.submid();
 popUpsave2('./contenido/anuncio/grabaranun1.php', 'ventana', '300','300','0');
}else{
alert ("No se puede mandar el formulario porque no cumple lo esperado");
}
Debes asegurarte que validaropt retorne true o false, a demas de hacer lo que tenga que hacer....

Quim
  #7 (permalink)  
Antiguo 08/04/2008, 09:23
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

creo recordar que primero hace el submit y despues el action, pero para que se ejecute action, el submit debe retornar true
  #8 (permalink)  
Antiguo 08/04/2008, 09:42
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

Gracias a todos por sus repuesta si ubiera mas informa de eso para mejorar estos detalles de los formularios seria bien.


quimfv amigo me puedes dar algo de ejemplo de la primera opcion de que me escribes de tener un boton escondido para ejecutarlo porfa.. si entiendo la logica pero neceisto un ejemplito para hacerlo plis...
  #9 (permalink)  
Antiguo 08/04/2008, 09:47
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

ahora quimfv sobre la segunda opcion no creo que sea buena por que lo que estaria haciendo es ejecutar esa ventana y no estaria pasando los parametros para grabar en la base de datos , mira aqui te dejo mi php que graba , y esto tiene condiciones que el onsubmit evaluara muy aparate de las validaciones de los campos de la funcion validaopt()



<?php

include("./../../../anuncios/details/conexion.php");
?>
<html>
<head>
<title>Datos Basicos Inmueble</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="styles/style_page.css" rel="stylesheet" type="text/css">

</head>
<body>

<?php

//VARIABLES DEL SISTEMA
$id_usuario = $_POST['id_usuario'];
$id_area = "1";

$opt_predefinido ="".$_POST['opt_subtipo'];
$select_tipor1 = "".$_POST['select_tipor1'];
$txt_tipor2 = "".$_POST['txt_tipor2'];

?>

<table border="0" cellpadding="2" cellspacing="2" width="100%">
<tr>
<td align="center">
<br/><br/><br/><br/>
<!--NO SE PUDO CREAR EL REQUERIMIENTO INGRESADO, VUELVA A INTENTARLO -->
<?php


$rs_num_anun1 = pg_query($conectID,"select nun_anun_per as permitidos from usuario where idusu=$id_usuario");
$rs_num_anun2 = pg_query($conectID,"select count(*) as registrados from anuncio where idusu=$id_usuario");

if(!$rs_num_anun1) {echo "PROBLEMA PARA EXTRAER DATOS :".error_reporting(E_ALL ^ E_NOTICE); exit;}
else
{
if(!$rs_num_anun2) {echo "PROBLEMA PARA EXTRAER DATOS :".error_reporting(E_ALL ^ E_NOTICE); exit;}
else{
while($row_num_anun1 = pg_fetch_object($rs_num_anun1))
{
$numper= $row_num_anun1->permitidos;
while($row_num_anun2 = pg_fetch_object($rs_num_anun2))
{
$numreg= $row_num_anun2->registrados;
}
}
}
}

if($numper == $numreg) //Si es invitado y tiene 2 inmuebles
{ //No se hace nada;
echo "No puede publicar mas de 1 Anuncio,Temporalmente";
}
else
{
//Generar nuevo codigo para el registro de inmueble Verificando si existen inmuebles
$querycodanuncio = "select max(idanun)+1 as codanuncio from anuncio";

$rs_codanuncio=pg_query($conectID, $querycodanuncio);
if(!$rs_codanuncio)
{echo "Problema para Extraer el codigo de la inmueble siguiente: ".error_reporting(E_ALL ^ E_NOTICE); exit;}
else
{
while($row_codanuncio = pg_fetch_object($rs_codanuncio))
{
if ($row_codanuncio->codanuncio==0)
{$codanuncio=1;}
else
{$codanuncio = $row_codanuncio->codanuncio;}
}
}
if ($opt_predefinido==1){
$rs_nom_subtipo = pg_query($conectID,"select * from subtiporubro where idsubtipo='$select_tipor1'");
if(!$rs_nom_subtipo) {echo "PROBLEMA PARA EXTRAER DATOS :".error_reporting(E_ALL ^ E_NOTICE); exit;}
else
{
while($row_nom_subtipo = pg_fetch_object($rs_nom_subtipo))
{
$idrubro=$row_nom_subtipo->idsubtipo;
$rubro= $row_nom_subtipo->nomsubtipo;
}
}
}
else{
if ($opt_predefinido==2){
$idrubro=1;
$rubro= $txt_tipor2;
}
}

//REALIZANDO LA ACTUALIZACION DE DATOS
$idanuncio = $codanuncio;
$stmt="INSERT INTO anuncio(idanun,idusu,fech_reg,idsubtipo,nomsubtipo ) VALUES ('$idanuncio','$id_usuario',date(now()),'$idrubro' ,'$rubro')";
//echo $stmt;
$rs_insert=pg_query($conectID, $stmt);
//$row_insert = mysql_fetch_object($rs_insert);

if(!$rs_insert)
{
echo "Problema para actualizar datos del Proyecto: ".error_reporting(E_ALL ^ E_NOTICE); exit;
}
else
{
echo "El Nuevo Inmueble se guardo Correctamente";
}

?>
<br/><br/><br/>

<a href="javascript:window.close();"><img src="../../contenido/images/button_ok.png" border="0"></a>
</td>
</tr>
</table>

<?php
}
?>
</body>
</html>
  #10 (permalink)  
Antiguo 08/04/2008, 10:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Problema con el onsubmit no se ejecuta - Ayuda

La idea de la primera opcion es:

Código:
...
<span id="botonescondido" style="display:none">...elboton type submid...</span>
....
la funcion de validación:

Código:
function valida(){
var havalidado=false;

... lo que sea ... si cumple havalidado=true si no dejas havalidado como estaba.

if (havalidado){
   document.getElementById("botonescondido").style.display="block";
}else{
   document.getElementById("botonescondido").style.display="none";
}
}
en cada input que pueda modificar la condicion de validado

<input .... onBlur="valida()" >

(onBlur se produce quando el input pierde el foco... para hacerlo facil el ultimo input mejor que no tenga que validar nada puesto que si no hay un input siguiente en firefox da problemas)

en el momento que se cumplan las condiciones para mandar el form el boton aparecera y se podra hacer click y el evento onSubmid se producira.

(en "CONTACTE" de http://www.iscinformatica.cat funciona con la primera opción, pero NO empiezes a mandar mensajes a la pobre jente de ISC)


Ahora la segunda opcion es mas sencilla y funciona puesto que en el momento que haces form.submid() estas mandando el formulario con los parametros, en realidad estas ejecutando la action que tengas definida en el form y los parametros iran por el metodo post, y despues abriras el popup con la funcion siguiente que te he puesto, por supuesto que no tienes que poner nada en el onSubmid en este caso.

Código:
function ValidaMandaiPop(form){
if (validaropt(form)){ //<--aqui valida
 form.submid();  //<--aqui manda el form
 //popUpsave2('./contenido/anuncio/grabaranun1.php', 'ventana', '300','300','0'); 
}else{
alert ("No se puede mandar el formulario porque no cumple lo esperado");
}
Perdón no me habia fijado que llamabas al mismo fichero desde el action, que desde onSubmid="popUpsave2..." ufff luego tienes otro problema, porque action va a abrir /contenido/anuncio/grabaranun1.php en la ventana donde estes y popUpsave2 en una nueva.... pero esto te pasara tanto en la opcion uno como en la dos... yo me dejaria de popups y dejaria que desaparezca el formulario y aparezca el contenido de /contenido/anuncio/grabaranun1.php una vez evaluados los parametros...




Quim

Última edición por quimfv; 08/04/2008 a las 10:57
  #11 (permalink)  
Antiguo 08/04/2008, 11:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Problema con el onsubmit no se ejecuta - Ayuda

Deberias rediseñar /contenido/anuncio/grabaranun1.php para que si no se ha guardado la informacion vuelva a mostrar los datos en el formulario para que el usuario pueda corregirlos... esto lo puedes hacer recuperandolos de $_POST.

Código PHP:
if(!$rs_insert)
{
echo 
"Problema para actualizar datos del Proyecto: ".error_reporting(E_ALL E_NOTICE); 
//Aqui todo el formulario poniendo value=$_POST(lo que sea)

}
else
{
echo 
"El Nuevo Inmueble se guardo Correctamente";
}

//<a href="javascript:window.close();"><img src="../../contenido/images/button_ok.png" border="0"></a> <--no sera necesario 
  #12 (permalink)  
Antiguo 08/04/2008, 16:39
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años
Puntos: 0
Re: Problema con el onsubmit no se ejecuta - Ayuda

gracias `pr tanta info quimfv pero mira hice esto puse otro boton oculto.
<button type="submit"></butom> --- oculto

y el boton principal ejecuta la funcion de validacion de campos ejecuto el click del boton oculto y me resulto oajala np caiga esa jugada.. gracias por todo
  #13 (permalink)  
Antiguo 12/03/2009, 09:53
 
Fecha de Ingreso: mayo-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
Respuesta: Re: Problema con el onsubmit no se ejecuta - Ayuda

Cita:
Iniciado por oscarpt2184 Ver Mensaje
gracias `pr tanta info quimfv pero mira hice esto puse otro boton oculto.
<button type="submit"></butom> --- oculto

y el boton principal ejecuta la funcion de validacion de campos ejecuto el click del boton oculto y me resulto oajala np caiga esa jugada.. gracias por todo
Hola, yo tengo el mismo problema, pero no entendi como lo solucionaste...
¿puedes ser mas especifico o dar mas detalles??. por ejemplo como haces para hacer click en el boton principal (que supongo es el de tipo button) y que se genere el click al boton tipo submit? ¿los pusiste uno arriba de otro? y si es asi, como te aseguras que primero se ejecute la funcion del boton "button" y luego la del boton "submit"?

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:18.