Foros del Web » Programando para Internet » Javascript »

[Resuelto] Validar N campos

Estas en el tema de [Resuelto] Validar N campos en el foro de Javascript en Foros del Web. Saludos. Estoy constuyendo un formulario en PHP: <INPUT TYPE="text" NAME="CANTIDAD[]" VALUE="<? $db->p("cantidad"); ?>" size="2" maxlength="2"> Este campo se repite n cantidad de veces. NAME="CANTIDAD[]" debe ...
  #1 (permalink)  
Antiguo 24/03/2003, 14:45
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 22 años
Puntos: 1
Pregunta [Resuelto] Validar N campos

Saludos.

Estoy constuyendo un formulario en PHP:


<INPUT TYPE="text" NAME="CANTIDAD[]" VALUE="<? $db->p("cantidad"); ?>" size="2" maxlength="2">

Este campo se repite n cantidad de veces.

NAME="CANTIDAD[]" debe quedar así para poder manejarlo como un arreglo en la página que me maneja los datos.

la cosa es:

¿Como coloco un javascript para verificar que cada uno de esos campos este lleno y solo tenga números y que al dar el alert se regrgese automáticamente al campo correspondiente? tomando en cuenta que pueden ser 2, 3 o n cantidad de campos


Gracias
__________________
Aprender Siempre. Lema de Vida

José Molina

Última edición por KarlanKas; 25/03/2003 a las 07:11
  #2 (permalink)  
Antiguo 24/03/2003, 15:25
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 8 meses
Puntos: 0
hola,

de usar Javascript, no puedes utilizar esa notación para nombrar los formularios (aunque no estoy cien por cien seguro, creo que es así), ya que js no te lo reconocerá... tendras que usar nombres comunes de texto... por ahí lo que podes hacer es usar nombres de tipo "texto_0", "texto_1", tipo array pero agregado como nº al final en la cadena

para chequear que un campo no esté vacío, una vez que tienes la variable que apunta al campo (suponiendo que el form se llame "form" por ej var f = document.forms['form'], y si el campo es "texto_1", var campo = f['texto_1']), chequeas si existe la propiedad value el campo:

Código:
if (!f['texto_1'].value) {
// el campo está vacío
}
Para chequear que no tenga espacios vacíos:

Código:
if (f['texto_1'].value.indexOf(' ') != -1) {
// tiene al menos un espacio en blanco
}
Ahora, lo de que sean solamente números y solamente dos caracteres, es conveniente hacerlo con expresiones regulares, pero tienes que investigar un poco exp. reg. que es un lenguaje aparte, creo que la exp. reg. sería algo así como "^([0-9]){2}$"... de todas maneras también te convendría hacer esa validación del lado del servidor

saludos
__________________
webdeveloper
http://www.javascripters.com.ar/
diseño web y tecnología
  #3 (permalink)  
Antiguo 24/03/2003, 15:28
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 22 años
Puntos: 1
Estoy intentando lo siguiente para validar que solamente sean números:


<script language="JavaScript">
function noVacio() {
var i;
var n = parseInt(document.frm.cantidad.value);
var bError = false;

for (i = 0; i < n; i++){
bError = bError || (isNaN("document.frm.elemento" + i + ".value == ''"));
if (bError){
alert("Campo inválido");
eval("document.frm.elemento" + i + ".focus()");
break;
}
}
if (!bError) alert("Ok");
}

</script>


Pero todo lo ve como si no fueran números

Me imagino que el error esta en aqui:

bError = bError || (isNaN("document.frm.elemento" + i + ".value == ''"));
__________________
Aprender Siempre. Lema de Vida

José Molina
  #4 (permalink)  
Antiguo 24/03/2003, 15:31
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 22 años
Puntos: 1
Saludos.

Ok, esta listo lo saque de las faq, solamente hay que pensar un poco:


<script language="JavaScript">
function NoVacio() {
var i;
var n = parseInt(document.Formulario_Comprar.Num_Vueltas.v alue);
var bError = false;
var bError_2 = false;

for (i = 1; i <= n; i++){
bError = bError || (eval("document.Formulario_Comprar.CANTIDAD" + i + ".value == ''"));
if (bError){
alert("El campo \"CANTIDAD\" no puede estar vacio");
eval("document.Formulario_Comprar.CANTIDAD" + i + ".focus()");
break;
}
}

if (!bError) {
for (i = 1; i <= n; i++){
bError_2 = bError_2 || (isNaN(eval("document.Formulario_Comprar.CANTIDAD" + i + ".value")));
if (bError_2){
alert("El campo \"CANTIDAD\" debe ser un número");
eval("document.Formulario_Comprar.CANTIDAD" + i + ".focus()");
break;
}
}
if (!bError_2) {

if (document.Formulario_Comprar.FORMA_PAGO.value == "") {
alert ("Debes seleccionar la \"Forma de Pago\"");
document.Formulario_Comprar.FORMA_PAGO.focus()
}else{
document.Formulario_Comprar.PASO.value=1;
document.Formulario_Comprar.submit();
}
}
}
}

</script>
__________________
Aprender Siempre. Lema de Vida

José Molina
  #5 (permalink)  
Antiguo 24/03/2003, 18:56
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 8 meses
Puntos: 0
una sola cosa, si se introduce algo como "110bfg" en el campo de formulario, parseInt te retornará 110 como número. ésa es una de las razones para usar expresiones regulares...

saludos
__________________
webdeveloper
http://www.javascripters.com.ar/
diseño web y tecnología
  #6 (permalink)  
Antiguo 25/03/2003, 05:38
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 22 años
Puntos: 1
Pregunta A ver

Saludos.

En mi caso el campo de texto solo admite 2 caracteres, así que no hay ese problema, bueno creo yo.

Ya probe y no tengo problemas, no se si me estaré saltando algún procedimiento.
__________________
Aprender Siempre. Lema de Vida

José Molina
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 18:28.