Foros del Web » Programando para Internet » Javascript »

funciones javascript que no funcionan

Estas en el tema de funciones javascript que no funcionan en el foro de Javascript en Foros del Web. Hola: ¿Alguien podría decirme por qué no saltan los alerts de estas funciones? Cuando le doy a enviar no me aparece ningún error en la ...
  #1 (permalink)  
Antiguo 18/02/2012, 04:45
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Pregunta funciones javascript que no funcionan

Hola:
¿Alguien podría decirme por qué no saltan los alerts de estas funciones? Cuando le doy a enviar no me aparece ningún error en la página, pero tampoco van bien.Saludos.
Código PHP:
function mostrar_informacion(txt){
    
    
        
//comprobacion de correo
        
var b= /^([a-zA-ZñÑ0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
 if (
form.email.value == ""

return 
true
   }else{ 
   if (! 
b.test(txt) ) {
            
alert('Email no válido');
             return 
b.test(txt)
            }
        
        
}
}
function 
vacio(q) {
        for ( 
0q.lengthi++ ) {
                if ( 
q.charAt(i) != " " ) {
                        return 
true
                
}
        }
        return 
false
}

//valida que el campo no este vacio y no tenga solo espacios en blanco
function valida() {
        
        if(
form.nombreamo.value == "" ) {
                
alert("Introduzca un cadena de texto.")
                return 
false
        
} else {
                
alert("OK")
                
//cambiar la linea siguiente por return true para que ejecute la accion del formulario
                
return true
        
}     
}
<
form id="form" name="form" method="post" enctype="multipart/form-data" action="ingreso.php" onSubmit="return mostrar_informacion(this.email.value); valida(this)"></form
  #2 (permalink)  
Antiguo 18/02/2012, 05:37
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 8 meses
Puntos: 62
Respuesta: funciones javascript que no funcionan

A vote pronto veo que el onSubmit tienes en mayúsculas, pon en minúsculas.
Luego tienes 2 llamadas a las funciones en el propio onsubmit, pon solamente 1 y desde ese llama a todas las funciones que necesites, y lo de this.email.value, no es la forma correcta de enviar el valor de un elemento.

ejemplo:

Código HTML:
Ver original
  1. <form onsubmit="return valida(this);">

Código Javascript:
Ver original
  1. function valida(form)
  2. {
  3.     var result = false;
  4.     var inputs = form.getElementsByTagsName('input');
  5.     for(i in inputs)
  6.     {
  7.         if(inputs[i].name=='email' && validaEmail(inputs[i].value))
  8.             result = true;     
  9.     }
  10. }
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 18/02/2012, 06:44
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: funciones javascript que no funcionan

quizás se soluciones con el operado &&
Cita:
return mostrar_informacion(this.email.value) && valida(this)
lo segundo es que a valida le pasas un parámetro pero después no lo recoges
Cita:
function valida(form)
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 18/02/2012, 07:15
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: funciones javascript que no funcionan

Ante todo, muchas gracias por contestar. A ver, os comento un poco lo que quiero a ver si se queda más claro y el por qué de hacerlo ahora mismo en dos funciones separadas.
Quiero, por una parte, verificar el email, para que lo escriban con el formato correcto, lo de los caracteres especiales es otra cuestión que ya tengo resuelta. Por otra parte, quiero que cierto campos, no todos, no se puedan quedar vacíos, ya tengo la validación en php, pero estoy intentando hacerlo también en javascript, considero que siempre es mejor dos validaciones que una sola. Cuando consiga hacerlo funcionar correctamente, puede que lo meta en una función todo, pero soy muy nueva y temo liarme, por eso lo hago por separado, porque soy más capaz de analizarlo y no metola pata con las llaves.
Zital, entiendo lo que me dices de que no es una manera correcta de llamar, pero no entiendo la función que me pones, no sé si es un ejemplo de cómo se debería llamar o qué tipo de función es. Si fuera el primer caso, después de mirarla varias veces, no tengo mucha idea de cómo adaptarla a lo que tengo. IsabelM, tu opción me ha solucionado gran parte, pero ha surgido un problema. Si no relleno ningún campo, me salta el alert "Introduzca una cadena de texto" (que es del campo nombreamo), pero si relleno con algún caracter el campo email y sigo dejando vacío el campo nombreamo, ya no salta el alert que indica que está vacío, no sé por qué.
  #5 (permalink)  
Antiguo 18/02/2012, 14:23
Avatar de Escain  
Fecha de Ingreso: enero-2007
Mensajes: 21
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: funciones javascript que no funcionan

Cita:
<form id="form" name="form" method="post" enctype="multipart/form-data" action="ingreso.php" onSubmit="return mostrar_informacion(this.email.value); valida(this)"></form>
Esta claro que la función valida debería proveer un Alert.
El problema es que realizas un return antes, por lo que no se ejecuta:
Código:
onSubmit="
return mostrar_informacion(this.email.value); // Retorna sin ejecutar la línea siguiente.
valida(this) // Por cierto, usa el punto y coma siempre que puedas.
"
Lo que comentan arriba es correcto, proporciona nada mas que una función, te evitaría errores difíciles de ver.

Mas correcciones:
Código:
 if (! b.test(txt) ) { 
            alert('Email no válido'); 
            return b.test(txt) 
 }
Esta parte siempre retorna false, deberías poner return false y te evitas una segunda comprobación de lo que ya sabes: que txt no cumple la regexp.

Finalmente no he probado tu forma de testear los valores, pero nunca he visto acceder a los valores como this.email.value y desde luego es peligroso usar this fuera de una función miembro, puede ser todo menos lo que esperas.
Supongamos que tengo razón, el test devolverá false en ambos casos y tu función mostrar_informacion no devuleve nada.
Prueba un alert(txt); al principio de la función.
  #6 (permalink)  
Antiguo 18/02/2012, 16:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: funciones javascript que no funcionan

A ver, en todos los manuales que he visto,dicen que para hacer el retorno de dos funciones se debía de poner "return función1;función2", por eso lo puse así, lo que me dijo IsabelM de poner && en vez del ; me funcionó, pero sólo a medias, ya he comentado el por qué.
Respecto a lo de this.email.value lo puse porque fue la única manera que encontré de que la función del email funcionara, no me convencía, pero no vi otra (normalmente lo hago con sólo "this", y ese es el motivo de que no pueda unir estas dos funciones, porque en una pongo this y en otra this.email.value.
Lo de return false, tienes razón, ya lo he corregido y funciona bien.
Y lo del alert(text) al principio de la función, no he entendido bien para qué, ni exactamente dónde tengo que ponerlo.
Por cierto, si conocéis otra manera de validar el email, que me permita unir las dos funciones, os lo agradecería,he visto unas cuantas, pero tenían errores.
  #7 (permalink)  
Antiguo 18/02/2012, 16:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: funciones javascript que no funcionan

a ver si con estos cambios se logra lo que quieres
Cita:
function mostrar_informacion(form){
if (form.email.value == "") return true;

//comprobacion de correo
var b= /^([a-zA-ZñÑ0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;



if (! b.test(form.email.value) ) {
alert('Email no válido');
return false;
} else {

return true;
}
}



function vacio(q) {
for ( i = 0; i < q.length; i++ ) {
if ( q.charAt(i) != " " ) {
return true
}
}
return false
}

//valida que el campo no este vacio y no tenga solo espacios en blanco
function valida(form) {
s = /^([\da-z\xc0-\xff])(([\da-z\xc0-\xff]+)(\s*))+([\da-z\xc0-\xff]+)$/i;
if(!s.test(form.nombreamo.value)) {
alert("Introduzca un cadena de texto.")
return false
} else {
return true;
}
}


return mostrar_informacion(this) && valida(this);
edito: es sencillo unir ambas funciones. simplemente has de usar condionales
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 18/02/2012, 17:45
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: funciones javascript que no funcionan

Va absolutamente perfecto IsabelM, muchísimas gracias. Y muchas gracias a tod@s los que me habéis aportado y ayudado a mejorar un poco con este problema.
Sólo una cosa más IsabelM, la expresión que has usado para la función valida, ¿la has creado tú?. ¿De dónde puedo obtener información para entenderla? Es que me ha impresionado un montón y estoy ansiosa por aprender (aunque sé que todavía estoy muuuuy lejos, pero no importa).
Mañana mismo, ahora que ya está bien, me pongo unir las funciones y lo subo aquí por si le sirve a alguien. De verdad, mil gracias.
  #9 (permalink)  
Antiguo 19/02/2012, 07:12
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: funciones javascript que no funcionan

He hecho esta función uniendo las otras dos, no sé cómo la véis, si le véis algún error, por favor, decídmelo, saludos.
Cita:
function validar (form){
if (form.email.value == "") return true;
//comprobacion de correo
var b= /^([a-zA-ZñÑ0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
if (! b.test(form.email.value) ) {
alert('Email no válido');
return false;}
s = /^([\da-z\xc0-\xff])(([\da-z\xc0-\xff]+)(\s*))+([\da-z\xc0-\xff]+)$/i;
if(!s.test(form.nombreamo.value)) {
alert("Introduzca un cadena de texto.") ;
return false;
}else {
return true;
}
}
Espero que sirva.
  #10 (permalink)  
Antiguo 19/02/2012, 08:37
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: funciones javascript que no funcionan

sí la he montado, pero no tiene nada de particular. quizás lo que más te llame la atención sea (\xc0-\xff). se trata de un rango de caracteres como (a-z) pero en este caso es el equivale hexadecimal de caractes con acentos, eñes y algunos otros.

como ves empieza en c0 que es igual a À y acaba en ff que es ÿ. aunque como la expresión tiene el flag (i), el rago puede ser (\xe0-\xff)

en cuanto al código que expones, ya en la primera condicional se ve claramente que va a cumplir con tu objetivo. prueba así
Cita:
function validar (form){
var s = /^([\da-z\xe0-\xff])(([\da-z\xe0-\xff]+)(\s*))+([\da-z\xe0-\xff]+)$/i;
if(!s.test(form.nombreamo.value)) {
alert("Introduzca un cadena de texto.") ;
return false;
}else {
if (form.email.value == "") return true;
//comprobacion de correo
var b= /^([a-zA-ZñÑ0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
if (! b.test(form.email.value) ) {
alert('Email no válido');
return false;}
}
return true;
}
primero has de verificar el campo que es obligatorio y después el opcional

la licencia que me he tomado en la expresión es que acepte dos o mas palabras, en caso que sólo quieras que se pueda insertar una sola palabra la expresión sería var s = /^([\da-z\xe0-\xff]+)$/i;
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #11 (permalink)  
Antiguo 19/02/2012, 13:49
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: funciones javascript que no funcionan

Ok, tomo nota, ¡¡¡está clarísimo!!! :) Muchas gracias, de verdad, estoy aprendiendo un montón contigo.No sabía que las funciones debían seguir un orden lógico, 1º el obligatorio y luego lo opcional. La expresión para dos o más palabras, me sirve mejor, y he estado un vistazo a los manuales que he encontrado para aprender, en cuanto pueda miraré también lo que me has dado, porque me soluciona la vida. No sé casi nada, y antes, no tenía manera de saber cómo poner en una función que validara espacios entre palabras, y ahora, gracias a ti y a estos manuales lo sé (\x20). Genial, sencillamente maravilloso. Mil gracias.

Etiquetas: formulariodecontacto, javascript-funciones
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 09:15.