Foros del Web » Programando para Internet » Javascript »

Problema con función de formulario

Estas en el tema de Problema con función de formulario en el foro de Javascript en Foros del Web. Tengo un formulario, en el cual he puesto varios campos como requeridos mediante una función. He llamado a la función desde un onsubmit. Mi problema ...
  #1 (permalink)  
Antiguo 21/04/2009, 13:51
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Pregunta Problema con función de formulario

Tengo un formulario, en el cual he puesto varios campos como requeridos mediante una función. He llamado a la función desde un onsubmit. Mi problema es que me aparece el mensaje de error correctamente, pero aun asi el formulario se envia. No se porque, y lo que quiero es que al aparecer el error, no se envie el formulario. Dejo aqui la funcion, y la orden que la llama.
Muchas gracias

Código:
<form action="send.php" method="post" name="formulario" target="_self" id="formulario" onsubmit="validarpersona()">
Código:
function validarpersona()
{
if (document.formulario.persona.value=="") // nombre del campo
{
alert("Debe ingresar su nombre.");
document.formulario.persona.focus();
return;
}

document.formulario.submit();

}
  #2 (permalink)  
Antiguo 21/04/2009, 13:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: Problema con función de formulario

La línea document.formulario.submit() sobra. Cuando no valide, haz un return false, y si valida, return true. Y a la hora de llamar a la función desde el evento onsubmit, hazlo así:
Código javascript:
Ver original
  1. return validarpersona();
Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 21/04/2009, 14:20
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

Ok, muchas gracias. Podrias por favor poner el codigo como quedaria? No conozco mucho de codigo, y return false o true no se donde colocarlo ni en que caso.

Última edición por Chaoscontrol; 23/04/2009 a las 16:13
  #4 (permalink)  
Antiguo 23/04/2009, 16:13
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

UP!
PD: esperando respuesta...
  #5 (permalink)  
Antiguo 23/04/2009, 16:22
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 17 años, 1 mes
Puntos: 75
Respuesta: Problema con función de formulario

¬_¬

pues donde pusiste return, no lo dejes solo, no le puedes decirle a tu hijo "ve a la tienda" y no decirle que comprar. de eso se trata:

return X;

que donde???!!! pues donde esta el return solo :(
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #6 (permalink)  
Antiguo 23/04/2009, 16:25
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

como puedes contestar tan despectivamente sin siquiera haberte leido mi post? :)
Nunca puse el return solo, precisamente es el return lo que no puse...
Y a lo que me refiero con que nose donde ponerlo no es el return, sino el return false o true, y ademas no se cual de los 2 debo poner. Gracias por responder.
  #7 (permalink)  
Antiguo 23/04/2009, 16:38
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Problema con función de formulario

Creo que lo que ambos han querido decir, uno con su silencio y otro más directamente es que "si no sabes mucho de código" y te han dado ya pistas que lo busques por tu cuenta, es la única manera de que aprendas.

Normalmente esto funciona así:
1. Tienes un problema.
2. Investigas.
3. No encuentras solución,o lo que encuentras no lo entiendes.
4. En vez de preguntar por la solución preguntas lo que no has entendido.
5. Una vez comprendido sigues intentando solucionarlo..

y así vas avanzando tanto en conocimiento como en la resolución de tu problema. Lo que no puedes esperar es que la gente te resuelva el problema, bueno si puedes, pero eso solo se hace cuando tienes un empleado al que le pagas para que lo haga.

DP: Yo por ejemplo también se la solución a tu problema, pero creo que lo que te falta es un poco de interés por aprender y por lo tanto creo que con lo que ya te explicaron puedes continuar en tu camino por solucionar el problema, vuelve cuando hayas avanzado algún paso o cuando ya no encuentres salida.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #8 (permalink)  
Antiguo 23/04/2009, 16:46
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

Ok entonces yo no tengo un buen concepto de lo que es un foro. Yo pensaba que un foro era aquel lugar donde contactar con personas que saben algo que tu no sabes, y estan dispuestas a ayudarte, asi como tu haces lo mismo. Nadie puede saberlo todo de todo. Quiza vosotros sabeis mucho de programación, pero no lo tendreis sobre otra cosa. En este caso, por ejemplo, a mi no me interesa aprender demasiado sobre esto, porque no es en lo que estoy interesado, solo es un paso intermedio, que quiero hacer.
Mi fin era crear un formulario, segun tu, deberia haber aprendido a hacerlo. Segun yo, me dedique 3 horas a buscar 1 creado, y que me viera capaz de adaptar a mis necesidades, ya que no es de mi interes aprender a usar este ámbito. Ahora, me encuentro con una pequeña duda, y he acudido a un foro donde hay gente que sabe del tema, para ver si me podian ayudar a resolverlo.
En fin. No quiero reprocharos nada, porque evidentemente esto es voluntario, pero creo que no es tan malo tener dudas y pedir ayuda a veteranos.
Gracias por las respuestas.
  #9 (permalink)  
Antiguo 23/04/2009, 16:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Problema con función de formulario

Hola:

Espero que sea para ayudar: El abc de los formularios

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 23/04/2009, 16:48
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

Gracias, me lo miro y comento.
  #11 (permalink)  
Antiguo 23/04/2009, 16:54
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Problema con función de formulario

Para empezar un foro es un lugar de "discusión" no un servicio de soporte técnico (a menos que sea un foro específicamente orientado a ese servicio).

Entiendo tu postura pero no la comparto, seguramente encuentres a mucha gente dispuesta a ayudarte de esa forma, pero mi punto de vista es otro, yo valoro mi tiempo y si lo "pierdo" ayudando desinteresadamente a las personas que tienen dudas al menos intento que sea con aquellas que se esfuerzan en aprender, porque son estas las que progresan en conocimiento y luego van a hacer lo mismo con otros, ayudando a las comunidades a levantarse. Resumiendo, desde mi punto de vista tu postura es bastante "interesada", "que me hagan el trabajo sucio, que para eso están los geeks..".

Igualmente yo no se de todo, pero procuro tener una base mínima antes de preguntar en algún sitio, más que nada por ahorrar a los veteranos la tediosa tarea de explicarme cosas relativamente "elementales". Es como si llegas a un foro de coches y preguntas: ¿Realmente el coche necesita motor para funcionar? ¿Y el depósito de combustible?

DP: Espero que no tomes mi post como un ataque, solo he intentado decirte porque es comprensible la reacción de algunos, ponte en su lugar.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."

Última edición por Dude--; 23/04/2009 a las 17:05
  #12 (permalink)  
Antiguo 24/04/2009, 02:34
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

Tranquilo, te entiendo, y quizá tengas razón.
Pero en este mundo de la informática hay tantos campos que es imposible tener una base en todos. Solo en programación, php, actionsript, javascript, flash, html... Unos los toco más y otros menos. Lo siento por haber pretendido que otros me hagan el trabajo.

Gracias por el aporte caricatos. Me he estado mirando el apartado de validación, y he visto ejemplos del return que no he puesto, pero no aparece nada del return false/true que me comentabais.
Aparte de eso, me ha interesado tambien lo de validar campos que no sean de texto, que tambien lo necesitaba y no sabia como hacerlo. Gracias

Aun asi, sigo con la duda de como usar ese return false/true.
  #13 (permalink)  
Antiguo 24/04/2009, 03:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Problema con función de formulario

Hola:

La verdad es que a mi no me gusta poner return true/false porque me suena a "forzar un resultado", porque si en vez de ponerlo de esa manera se usa un método o función que devuelva un valor lógico el resultado es el mismo... el ejemplo de la confirmación es el caso más sencillo... la ventana modal confirm se caracteriza por sus dos botones de respuesta aceptar/cancelar, donde según sea el seleccionado se obtiene justamente true/false... otra forma de obtener valores lógicos es en las comparaciones:

vacio = "";
return campo_obligatorio.value != vacio;

Incluso se puede considerar false el 0 (el número)

return parseInt(n.value);

En resúmen, la estrategia de las validaciones (también vale para los enlaces... pero mejor no toquemos el tema), es darle el false al evento para su cancelación... el evento de envío de los formulario es submit por eso se pone onsubmit="return lo_que_sea()"

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #14 (permalink)  
Antiguo 24/04/2009, 07:52
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 17 años, 1 mes
Puntos: 75
Respuesta: Problema con función de formulario

Cita:
Iniciado por Chaoscontrol Ver Mensaje

Código:
function validarpersona()
{
if (document.formulario.persona.value=="") // nombre del campo
{
alert("Debe ingresar su nombre.");
document.formulario.persona.focus();
return;
}

document.formulario.submit();

}
Cita:
Iniciado por Chaoscontrol Ver Mensaje
como puedes contestar tan despectivamente sin siquiera haberte leido mi post? :)
Nunca puse el return solo, precisamente es el return lo que no puse...
Y a lo que me refiero con que nose donde ponerlo no es el return, sino el return false o true, y ademas no se cual de los 2 debo poner. Gracias por responder.
como que no pusiste el return? yo lo veo, no se si este loco pero lo veo antes mas grande que las otras letras xDDD, men,mira te explico. en el formulario que tienes no te va a servir el return, por que? no se si se pueda pero si estas llamandolo desde HTML no creo que te sirva un return, que hace el return?

R/

Código javascript:
Ver original
  1. function funcion1(valor){
  2.    if(valor1==5){
  3.        return true; //si es 5 el valor entonces devuelves verdadero
  4.    }
  5.    else{ return false; } //sino devuelves falso
  6. }
  7.  
  8. function funcion2(){
  9.    var dato = document.getElementById("input1").value;
  10.    if(funcion1(dato)){ //si devolvio true en la otra funcion (return true;)
  11.       alert("usted escribio 5!!");
  12.    }
  13. }

si me entiendes? para eso es el return, para hacer validaciones tambien en otras funciones, etc. para devolver un valor de una operacion o un condicional que se hace en la otra funcion a la cual llamas. y entonces no digas que no la llamaste por que yo vi que arriba en el ejemplo pusiste el return y lo pusiste solo, a menos que me este enloqueciendo y viendo codigo mal.

por otro lado mi compañero alla arriba tiene razon, por mas que no sepas e ignores el tema eso no significa que seas un tapado, se que si investigas entenderas ;)

suerte compañero.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #15 (permalink)  
Antiguo 27/04/2009, 04:45
 
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problema con función de formulario

Bueno, por fin consegui mi proposito. Muchas gracias a todos. Os dejo aqui mi codigo final, por si alguien lo necesita o le interesa.

Llamando a la función:
Código:
<form action="send.php" method="post" name="formulario" target="_self" id="formulario" onsubmit="return validar()">
La función:
Código:
function validar()
{
if (document.formulario.persona.value=="")
{
alert("Debe ingresar su nombre.");
document.formulario.persona.focus();
return false;}
else if (document.formulario.nombre.value==""){
alert("Debe ingresar el nombre de su empresa.");
document.formulario.nombre.focus();
return false;	
}
else if (document.formulario.email.value==""){
alert("Debe ingresar su email.");
document.formulario.email.focus();
return false;
}
else if (document.formulario.dir.value==""){
alert("Debe ingresar la direccion de su empresa.");
document.formulario.dir.focus();
return false;
}
else if (document.formulario.poblacion.value==""){
alert("Debe ingresar la poblacion de su empresa.");
document.formulario.poblacion.focus();
return false;
}
else if (document.formulario.cp.value==""){
alert("Debe ingresar el código postal de su empresa.");
document.formulario.cp.focus();
return false;
}
else if (document.formulario.t1.value==""){
alert("Debe ingresar un telefono de contacto.");
document.formulario.t1.focus();
return false;
}
else if (document.formulario.mensaje.value==""){
alert("Debe ingresar un mensaje.");
document.formulario.mensaje.focus();
return false;
}}
Gracias a todos, y disculpad por las moléstias.
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 19:06.