Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] no me funciona return en javascript

Estas en el tema de no me funciona return en javascript en el foro de Javascript en Foros del Web. Hola a todos. He hecho una funcion en javascript para enviar un formulario, y cuando quiero interrumpirla usando un "return 0;" luego de una sentencia ...
  #1 (permalink)  
Antiguo 08/02/2013, 11:39
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta no me funciona return en javascript

Hola a todos. He hecho una funcion en javascript para enviar un formulario, y cuando quiero interrumpirla usando un "return 0;" luego de una sentencia dentro de un if no me funciona y me ejecuta igual las sentencias que siguen. Esta es la funcion:
Código:
function enviar () {
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;
    if ((username == "") && (password == "")) {        
        alert("Debe ingresar su Nombre de Usuario y su Contraseña para acceder");
        document.getElementById("username").focus();
        return 0;        
    } else {
        if (username == "") {
            alert("Debe ingresar su Nombre de Usuario para acceder");
            document.getElementById("username").focus();
            return 0;
        } else {
            if (password == "") {
                alert("Debe ingresar su Contraseña para ingresar");
                document.getElementById("password").focus();
                return 0;
            } else {                 
                document.fingreso.username.value = trim(username);
                document.forms["fingreso"].submit();
                return 1;                
            }
        }
    }        
}
En este caso si no he ingresado ni username y ni password me envia igual el formulario, ignorando mi return 0; . Ayuda xfaaaaaaa
  #2 (permalink)  
Antiguo 08/02/2013, 11:46
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: no me funciona return en javascript

Tenés que llamar a tu función de validación con onsubmit="return funcion_validar();" en la etiqueta form, es decir que esto además
document.forms["fingreso"].submit();
te sobra

Lee estos posts y los ejemplos vinculados:

http://www.forosdelweb.com/f13/valid...3/#post4344960

http://www.forosdelweb.com/f13/que-h...5/#post4353569

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 08/02/2013, 12:04
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: no me funciona return en javascript

no lo he solucionado agregando el onsubmit en el form y eliminando:
document.forms["fingreso"].submit();
lo que quiero es que en cada ocasion que haya "return 0;" aborte la funcion y no pase nada pero igual, me manda el formulario con los cambios que me propones. Gracias por tu ayuda. Este es mi form por si a caso:
Código:
<form id="fingreso" name="fingreso" method="post" action="ingreso.php" onsubmit="return enviar()">
            <table>
                <tr>
                    <td>
                        Nombre de Usuario: 
                    </td>
                    <td>
                        <input type="text" id="username" name="username" size="20"> 
                    </td>
                </tr>
                <tr>
                    <td>
                        Contraseña:
                    </td>                               
                    <td>
                        <input type="password" id="password" name="password" size="20">
                    </td>
                </tr>
                <tr>
                    <td>                        
                    </td>
                    <td>
                        <input type="submit" value="Ingresar" onclick="enviar()"> 
                    </td>
                </tr>
            </table>
        </form>
  #4 (permalink)  
Antiguo 08/02/2013, 12:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: no me funciona return en javascript

Hola:

Cita:
Iniciado por fandurc Ver Mensaje
...lo que quiero es que en cada ocasion que haya "return 0;" aborte la funcion...
En javascript "return 0" no aborta nada

... tal vez ¿return false...?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 08/02/2013, 12:22
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: no me funciona return en javascript

gracias caricatos, pero la misma historia, sucede exactamente lo mismo.
¿No habrá alguna forma alternativa de validar un login con un mensaje de error en caso de que falte algun dato y que no envie el form?
  #6 (permalink)  
Antiguo 08/02/2013, 12:33
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: no me funciona return en javascript

Cita:
Iniciado por fandurc Ver Mensaje
gracias caricatos, pero la misma historia, sucede exactamente lo mismo.
¿No habrá alguna forma alternativa de validar un login con un mensaje de error en caso de que falte algun dato y que no envie el form?
Podés tomarte el trabajo de recrear y hacer funcionar cualquiera de los ejemplos, que para eso están, que dejé en los links citados, por ejemplo
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Registrar usuario</title>
  5. <script type="text/javascript">
  6. //<![CDATA[
  7. function validar(){
  8. var elNombre = document.getElementById('nombre');
  9. if(elNombre.value == ''){
  10. document.getElementById('error_nombre').innerHTML = "Falta nombre";
  11. return false;
  12. }
  13. }
  14. //]]>
  15. </head>
  16. <form action="agregar_usuario.php" method="post" onsubmit="return validar();">
  17. <p>
  18. <label for="nombre">Nombre</label>
  19. <input type="text" value="" id="nombre" name="nombre" autocomplete="off" />
  20. <span id="error_nombre"><!-- mensaje de error --></span><br /><br />
  21. <input type="submit" value="procesar" name="procesando" />
  22. </p>
  23. </form>
  24. </body>
  25. </html>

Si aún así no te funciona, la respuesta es muy sencilla, revisá en primer lugar la sintáxis con a consola de errores y si no los hay, tus condicionales están mal planteados

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 08/02/2013, 13:00
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: no me funciona return en javascript

gracias emprear. Tus ejemplo que salen en los links que me pasaste ya los habia leido. La cosa es que cuando pones

Código:
if(elNombre.value == ''){
document.getElementById('error_nombre').innerHTML = "Falta nombre";
return false;
}
necesito anidar 4 if, para un alert cuando falte el username y password, un alert cuando falte solo username, un alert cuando falte solo password, y otro que envie el form si no se cumplen los anteriores. Creo que ahi esta el error, no se como anidarlos. Por que siempre se ejecuta el ultimo que me envia el form. Saludos
  #8 (permalink)  
Antiguo 08/02/2013, 13:02
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: no me funciona return en javascript

me ejecuta envia siempre el form aunque falten datos y me ejecuta el php. Saludos
  #9 (permalink)  
Antiguo 08/02/2013, 13:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: no me funciona return en javascript

Hola:

Cita:
Iniciado por fandurc Ver Mensaje
...necesito anidar 4 if...
Para evitar ese anidamiento yo uso un array para los mensajes:

mensajes = [];

if (username == "") mensajes.push("falta el username");
if (nombre == "") mensajes.push("falsta el nombre");

if (mensajes.length > 0) alert (mensajes.join(" y ");
return (mensajes.length == 0);

Saludps
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 08/02/2013, 13:20
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: no me funciona return en javascript

Cita:
Iniciado por fandurc Ver Mensaje
me ejecuta envia siempre el form aunque falten datos y me ejecuta el php. Saludos
En casos asi vas a lo seguro
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. function enviar(){
  10.    var username = document.getElementById("username").value;
  11.    var password = document.getElementById("password").value;
  12.    if ((username == "") || (password == "")) {        
  13.        alert("Debe ingresar su Nombre de Usuario y su Contraseña para acceder");
  14.        return false;        
  15.    }
  16. }
  17.  
  18. //]]>
  19. </head>
  20. <form action="ingreso.php" method="post" onsubmit="return enviar();">
  21. usuario <input type="text" name="username" id="username" value="" /><br />
  22. clave <input type="password" name="username" id="password" value="" /><br />
  23. <input type="submit" name="procesar" />
  24. </form>
  25. </body>
  26. </html>

Como tu mensaje afecta a los 2 errores, usas || (OR) y no && (AND)

Veo por ahi dando vueltas un trim(), supongo que en alguna parte dicha función esta definida, y el trim debés hacérlo a la s variables username y password antes del condicional

Si querés otra combinación, a experimentar un poco

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 08/02/2013, 13:26
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: no me funciona return en javascript

cambie el input del form de type="submit" a type="button" y se soluciono. Ya no se envía siempre el formulario. Gracias por su ayuda emprear y caricatos!!!
  #12 (permalink)  
Antiguo 08/02/2013, 13:29
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: no me funciona return en javascript

Incluso de esta forma se enviaba igual :
Código Javascript:
Ver original
  1. if ((username == "") && (password == "")) {        
  2.         alert("Debe ingresar su Nombre de Usuario y su Contraseña para acceder");
  3.         document.getElementById("username").focus();
  4.         return false;        
  5.     }
  6.     if ((username == "") && (password != "")) {
  7.         alert("Debe ingresar su Nombre de Usuario para acceder");
  8.         document.getElementById("username").focus();            
  9.         return false;
  10.     }
  11.     if ((username != "") && (password == "")){
  12.         alert("Debe ingresar su Contraseña para ingresar");
  13.         document.getElementById("password").focus();
  14.         return false;
  15.     }
  16.     if ((username != "") && (password != "")){
  17.         document.fingreso.username.value = trim(username);
  18.         document.forms["fingreso"].submit();
  19.         return true;                
  20.     }

Cambie el boton del form de submit a button y listo. Gracias emprear!
  #13 (permalink)  
Antiguo 08/02/2013, 16:14
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: no me funciona return en javascript

Hola:

He visto que el tema está marcado como "Solucionado", y yo afirmo que "NO" está solucionado

El error es muy evidente, "hay un error"...

Me explico:

Si no se cancela el envío con "return false", es simplemente porque no llega a esa línea de código... entonces hay una línea "incorrecta".

O el control no tiene el atributo id="username" (o id="password"), o está repe o similar... id es distinto de name.

No me gusta esa opción de marcar los temas como solucionado, ya que al menos en este caso no lo está.

Por cierto, sin un botón del tipo submit, tu formulario es "no accesible"

Si te vale considerar el tema solucionado, creo que estás engañándote.
Deberías ver la consola de errores de tu navegador y volver a intentarlo con un botón submit.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 08/02/2013 a las 16:18 Razón: ortografía
  #14 (permalink)  
Antiguo 08/02/2013, 22:39
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
[NO SOLUCIONADO]no me funciona return en javascript

@fandurc

efectivamente, encontraste una solución, pero haciendo caso omiso de todas las indicaciones que te hemos hecho, a la casa se entra por la puerta, no por el tiro de la chimenea.
Y te aclaro por las dudas que con tu sistema, con que ingresen 2 espacios en blanco en los campos, se va a procesar el formulario igual. Se puede saber entonces por que tanto empeño en poner mensajes y advertencias?

Quisiera ver que tipo de validación hacés en el server.

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #15 (permalink)  
Antiguo 07/11/2013, 07:50
 
Fecha de Ingreso: noviembre-2013
Mensajes: 1
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: no me funciona return en javascript

.CS

this.btnGuardar.Attributes.Add("onclick","return MyFuncion();");



Javascript
function MyFunction()
{
if (....)
{
return false;
}

return true;
}

Etiquetas: formulario, funcion, return
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 20:23.