Comunidad PHPeros
Lenguajes => JavaScript => Mensaje iniciado por: danielo en 03 de Junio de 2007, 13:30:02 pm
-
Hola buenas!! a ver si me podéis ayudar... ::) Os explico:
he creado un formulario en el cual he de validar sus campos con JavaScript. En TODOS estos campos sólo quiero comprobar que se introduce un numero (entero y positivo, para ser más exactos). Lo he conseguido hacer ;D y funciona bien, el problema está en que en mi opinión el código que he creado es un poco... cutre o chapucero (pero funcionar ya he dicho que funciona). El código es el siguiente:
function valUsers(form)
{
var er_numero = /(^([0-9]{0,3})|^)$/ //número de máximo 3 digitos o cadena vacia
if(!er_numero.test(form.userA.value)) {
alert('Contenido del campo "Usuarios A" no válido.')
return (false);
}
if(!er_numero.test(form.userB.value)) {
alert('Contenido del campo "Usuarios B" no válido.')
return (false);
}
if(!er_numero.test(form.userC.value)) {
alert('Contenido del campo "Usuarios C" no válido.')
return (false);
}
if(!er_numero.test(form.userD.value)) {
alert('Contenido del campo "Usuarios D" no válido.')
return (false);
}
}
Como he dicho esto funciona. Pero como podéis ver se hace la misma comprobación 4 veces. Y en realidad son más de 4 porque aquí he reducido el código. Entonces a mi se me ha ocurrido crear una cadena, introducir todos los valores que quiero comprobar en ella, y recorrer esa cadena con un bucle "for" para hacer la validación. Algo así:
//Declaro la cadena, la he probado de estas 2 maneras y ninguna funciona:
//cadena = new Array(userA, userB, userC, userD);
//var cadena = [userA, userB, userC, userD];
for (i=0; i<4; i++) {
if(!er_numero.test(form.cadena[i].value)) {
alert('Contenido del campo cadena[i] no válido.')
return (false);
}
Qué hago mal en la declaración de la cadena y el bucle FOR?? o como puedo hacer la comprobación de otra manera para evitar tantas sentencias IF??
Saludos y gracias!!
-
En javascript las matrices se definen mediante () por lo tanto no podrias llamar a los campos del formulario user(0), user(1)....
tienes que llamarlo obligatoriamente userA, userB, user....?
-
cómo naveda?? No te entiendo ???
Dices que a los campos del formulario les cambie los nombres??
-
Efectivamente, veo que has llamado a los campo userA, userB, userC... ¿Por qué no los llamas user(0), user(1), etc...
Con esto evitarás muchos problemas ;)
-
Pero... con eso qué gano?? se puede llamarles a los campos user(0), user(1), etc... con paréntesis "( )" y no pasa nada??
Y si los llamo así (que ahora mismo lo pruebo), cómo hago para hacer que mi comprobación sea más eficiente en vez de usar todas las sentencias IF??
Y cuando dices que con eso evitaré muchos problemas, qué otros problemas puedo tener??
-
En javascript las matrices se definen usando () por lo tanto estas creando una matriz a la que puedes acceder haciendo un bucle, recuerda que javascript no tiene la misma sintaxis que php...
-
si yo llamo a los campos del formulario user(0), user(1), etc. después como hago la comprobación??
xq esto no funciona:
var er_numero = /(^([0-9]{0,3})|^)$/ //número de máximo 3 digitos o cadena vacia
if(!er_numero.test(form.user(0).value)) {
alert('Contenido del campo "Usuarios A" no válido.')
return (false);
}
Y si le doy un nombre al campo sin los paréntesis, userA, sí que funcionaba.
??? ??? ???
-
mmm prueba ha llamarlos user[0]... a ver si tienes suerte :S
-
no funciona... :-\
nadie sabe como hacerlo??