Foros del Web » Programando para Internet » Javascript »

Problema con onsubmit

Estas en el tema de Problema con onsubmit en el foro de Javascript en Foros del Web. Tengo un form con este texto: Código PHP:          < form name = "formulari"  method = "post"  target = "main"  onSubmit = "this.action = (v_botton == 'enviar') ? 'aplirsi_enviar.php' : 'aplirsi_salvar.php'; return comprova(this.formulari); "  onKeyPress = "disableEnterKey()" ...
  #1 (permalink)  
Antiguo 16/04/2005, 03:07
 
Fecha de Ingreso: septiembre-2003
Mensajes: 216
Antigüedad: 21 años, 4 meses
Puntos: 0
Problema con onsubmit

Tengo un form con este texto:

Código PHP:
        <form name="formulari" method="post" target="main" onSubmit="this.action = (v_botton == 'enviar') ? 'aplirsi_enviar.php' : 'aplirsi_salvar.php'; return comprova(this.formulari); " onKeyPress="disableEnterKey()"

Segun que boton pulso va a un php u otro, esto me funciona bien; aunque nunca me hace la funcion comprova().

Alguna sugerencia....
  #2 (permalink)  
Antiguo 16/04/2005, 04:59
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Y por qué no en la function comproba, cuando comprueba que todo está bien (antes de mandar el return true) pones:

document.forms[formulari'].action = (v_botton == 'enviar') ? 'aplirsi_enviar.php' : 'aplirsi_salvar.php'

Otra cosa, al llamar a la function comprova pones como variable que recoge al formulario: this.formulari. Con poner this basta y sobra.

Dime si te fue bien!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 16/04/2005, 06:48
 
Fecha de Ingreso: septiembre-2003
Mensajes: 216
Antigüedad: 21 años, 4 meses
Puntos: 0
No me acaba de funcionar bien, debe ser que no lo escºribo correctamente.

Haber: Segun lo que me dices, tengo que pasar el action a la funcion y si todas las validaciones son correctas dar valor al document.forms[formulari'].action.

No se como montar el onsubmit....
  #4 (permalink)  
Antiguo 16/04/2005, 16:33
 
Fecha de Ingreso: septiembre-2003
Mensajes: 216
Antigüedad: 21 años, 4 meses
Puntos: 0
Este es mi codigo, pero tengo un poco de lio con los atributos del formulario


funcion:

Código PHP:
<script language="JavaScript">
function 
comprova(formulari){
if(
document.formulari.dades_afectat.value.length<1) {
alert("Has d'introduïr les dades de l’afectat/ada");  
document.formulari.dades_afectat.focus();      
return 
false;
}

document.forms[formulari].action = (v_botton == 'enviar') ? 'aplirsi_enviar.php' 'aplirsi_salvar.php';            
return 
true;
}
</script> 
form:

Código PHP:
       <form name="formulari" method="post" target="main" onSubmit="return comprova(this.formulari); " onKeyPress="disableEnterKey()"

<
input class="nover" type="submit" name="enviar" value="Enviar" onclick="v_botton = this.name";>
                        
<
input class="nover" type="submit" name="salvar" value="Salvar" onclick="v_botton = this.name">

</
form
  #5 (permalink)  
Antiguo 17/04/2005, 03:50
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61


Cambia el script por este:

Código PHP:
<script language="JavaScript">
    
var 
v_botton;
function 
comprova(esto){
if(
esto['dades_afectat'].value.length<1){
alert("Has d'introduïr les dades de l’afectat/ada");  
esto['dades_afectat'].focus();      
return 
false;
}
else{
esto.action = (v_botton == 'enviar') ? 'aplirsi_enviar.php' 'aplirsi_salvar.php';            
return 
true;
}
}
</script> 
Y el onsubmit ponlo así:
Código PHP:
onSubmit="return comprova(this);" 
Espero que te sirva!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 17/04/2005, 06:50
 
Fecha de Ingreso: septiembre-2003
Mensajes: 216
Antigüedad: 21 años, 4 meses
Puntos: 0
Gracias KarlanKas,

No entiendo com el valor de v_bottom es recogido por la funcion sin necesidad depassarlo como parametro.

Y por otro lado tengo la duda de si esto es lo mismo:

1 document.forms[formulari].action =

2 formulari.action =
  #7 (permalink)  
Antiguo 17/04/2005, 07:06
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61

Respecto a la variable v_bottom. Ésta es definida al principio del script:

var v_bottom;

Así es una variable global que se puede modificar en cualquier momento simplemente con el código que hay en el onclick.

Respecto a la segunda pregunta no te olvides de poner las comillas en la primera opción:

document.forms['formulari'].action

el segundo es igual al primero sólo en el IE. No te recomiendo que lo hagas.

Es absoltamente preferible la primera opción. Sin embargo si, como ves en el código pones en el form:

<form ... onsubmit="validar(this)">

y en la cabecera de la function:

function validar(pepito){}

Esto hará que el formulario "se meta" en la variable esto, de forma que poner pepito sea igual que poner
document.forms['formulari']

Así puedes poner:

pepito.action;

en vez de:
document.forms['formulari'].action;

Espero haberme explicado...

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #8 (permalink)  
Antiguo 17/04/2005, 09:53
 
Fecha de Ingreso: septiembre-2003
Mensajes: 216
Antigüedad: 21 años, 4 meses
Puntos: 0
Cita:
Iniciado por KarlanKas

Respecto a la variable v_bottom. Ésta es definida al principio del script:

var v_bottom;

Así es una variable global que se puede modificar en cualquier momento simplemente con el código que hay en el onclick.

Respecto a la segunda pregunta no te olvides de poner las comillas en la primera opción:

document.forms['formulari'].action

el segundo es igual al primero sólo en el IE. No te recomiendo que lo hagas.

Es absoltamente preferible la primera opción. Sin embargo si, como ves en el código pones en el form:

<form ... onsubmit="validar(this)">

y en la cabecera de la function:

function validar(pepito){}

Esto hará que el formulario "se meta" en la variable esto, de forma que poner pepito sea igual que poner
document.forms['formulari']

Así puedes poner:

pepito.action;

en vez de:
document.forms['formulari'].action;

Espero haberme explicado...

Un saludo!

En fin, esto ya me rula.

Pero tengo cosas que no las debo de hacer bien porque por ejemplo:

1- solo me va si pongo document.formulari.action =, y no me va si pongo document.forms['formulari'].action;

2- y si en lugar de formulari pongo el nombre de la variable que recibe la funcion, en este caso pepito:
pepito.action; tampoco me funciona
  #9 (permalink)  
Antiguo 17/04/2005, 10:59
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
¿Pones esto?

onSubmit="return comprova(this);

en vez de

onSubmit="return comprova(this.formulari);

?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 18/04/2005, 04:07
 
Fecha de Ingreso: septiembre-2003
Mensajes: 216
Antigüedad: 21 años, 4 meses
Puntos: 0
Todo tal i como me dices.

Pero dentro de la funcion no me acepta :document.forms['formulari'].action =
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 01:22.