Foros del Web » Programando para Internet » Javascript »

problema con control de inputs

Estas en el tema de problema con control de inputs en el foro de Javascript en Foros del Web. Hola buenas noches, tengo un campo que se llama categorias, es un select. Este campo en un momento dado puyede estar duplicado X veces. Pues ...
  #1 (permalink)  
Antiguo 01/12/2009, 19:26
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
problema con control de inputs

Hola buenas noches, tengo un campo que se llama categorias, es un select. Este campo en un momento dado puyede estar duplicado X veces. Pues bien, antes le ponia a los selects categorias este name: categorias[]. Así después podía controlarlos como un array:
var categorias = document.getElementsByName('categorias[]');

esto me iba bien, hasta que me di cuenta que los valores de los values de los selects no respetaban el orden descendente del código, si yo elegía antes el 2 select que el primero, el array categorias[] tenia como primer miembro el 2 select, y así consecutivamente dependiendo del orden de pulsado.

Esto lo arregle poniendo categorias[0], categorias[1]...con eso conseguí que me respetase el orden del array. Ahora el problema que tengo es que nos e como controlarlo dinamicamente en el caso de que sean por ejemplo 3 campos de categorias: categorias[0],categorias[1], categorias[2]...como creo un array donde me meta todos estos campos?

Muchas gracias!!!
  #2 (permalink)  
Antiguo 01/12/2009, 20:56
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: problema con control de inputs

La verdad no logro comprender bien tu pregunta... Necesitas meter en un array 3 campos en vez de 2 como ponias antes?
  #3 (permalink)  
Antiguo 02/12/2009, 00:29
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con control de inputs

Nop, antes tenia por ejemplo 8 inputs que se llamaban de name categorias[]. Cuando envio el formulario, antes hay un script que verifica si hay campos vacios etc... estos inputs de categorias yo los controlaba metiendolos en un array, por ejemplo: var categorias = document.getElementsByName('categorias[]');

Ahora por las razones que dije en el anterior mensaje, estos inputs los llamo así: categorias[0], categorias[1].....

Mi pregunta es, como hago para hacer lo mismo que cuando no ponia numeros en categorias[]. Quiero verificar que X inputs de categorias[0], categorias[1]..... no esten vacios. No es un numero fijo, sino que es dinamico, si añades 5 campos de categorias pues la comprobacion tendra que cojer estos 5 campos....

¿Se me entiende?
  #4 (permalink)  
Antiguo 02/12/2009, 04:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: problema con control de inputs

manejalo con un bucle, el control sera la longitud del array.
Código:
for(var i = 0; categorias[i]; i++){
// aqui dentro tus controles para determinar no esten vacios.
// ...
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 02/12/2009, 07:50
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Busqueda Respuesta: problema con control de inputs

A ver si me hago entender mejor jeje

Tengo estos dos inputs por ejemplo

<input name="categorias[0]" type="text" />
<input name="categorias[1]" type="text" />

Como hago para almacenar esto en un array, para que pueda controlar masivamente mediante un for, si el campo esta vacio o no.

Antes yo utilizaba esto:

<input name="categorias[]" type="text" />
<input name="categorias[]" type="text" />

y en el script esto:

var categoria= document.getElementsByName('categorias[]');

for(i=0;i<categoria.length;i++){
if(categoria[i].value == ""){
accion....
}
}

¿Como lo hago con estos inputs:


<input name="categorias[0]" type="text" />
<input name="categorias[1]" type="text" />

Gracias!!
  #6 (permalink)  
Antiguo 02/12/2009, 09:30
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: problema con control de inputs

Hola:

Los nombres de los controles son simplemente "texto", así que "categorias[0]" es distinto a "categorias[]"... si tienes una razón lógica para poner dentro de los corchetes el índice (no suele suceder), pues entonces cada control será distinto. y lo de "length" para conseguir el tamaño no tiene sentido...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 02/12/2009, 09:38
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con control de inputs

La razón lógica ya la expliqué. Estos inputs son selects, lo de los inputs era para el ejemplo. El problema que tenia es que a diferencia de los inputs, el array categorias[] que viene dado en el name de cada select, no me respeta el orden en el código, si seleccionaba primero el 2º select en vez del primero, en el array de categorias[] el primer valor era el del segundo select.

Alguien me dijo que si los ponia ordenados por indices no habría problema, en efecvto, no lo hay, lo único que pasa que ahora no se como captar los valores de todos los selects dinamicamente.
  #8 (permalink)  
Antiguo 02/12/2009, 09:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: problema con control de inputs

no comprendo cual es el proposito de cambiarlo de categoria[] a categoria[0], categoria[1], etc. pero bueno, es practicamente lo mismo, solo que en lugar de usar getElementsByName usaremos el objeto form y construir el nombre dinamicamente.
Código:
// asumiendo que form es la referencia del formulario;
for(var i = 0; form["categoria["+i+"]"; i++){
// aqui verifica los campos;
}
Cita:
Alguien me dijo que si los ponia ordenados por indices no habría problema, en efecvto, no lo hay, lo único que pasa que ahora no se como captar los valores de todos los selects dinamicamente.
no lo estoy entendiendo mucho pero creo que depende mas bien de como tienes el codigo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 02/12/2009, 09:52
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con control de inputs

El proposito, es que cuando estaba de esta forma categorias[] en todos los name del select, el orden del rray que yo obtenia no se correspondia con el orden descendente de la información tomada, por ejemplo... Si tu apretabas el 2º select antes del 1º select, al captar todos los elementos de categorias[] quedaba priemro registrado el 2º y después el 1º y yo quería que fuese en orden descendente, primero la información del primero select, después ladel 2º y así progresivamente
  #10 (permalink)  
Antiguo 02/12/2009, 10:07
 
Fecha de Ingreso: marzo-2006
Mensajes: 75
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: problema con control de inputs

Ya lo he solucionado muchas gracias!! lo hize desde el formulario:

document.formu['categorias['+i+']'].value


Gracias por vuestra ayuda.
  #11 (permalink)  
Antiguo 02/12/2009, 10:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: problema con control de inputs

en teoria lo entiendo. pero en terminos de codigo pienso que deberias haber tenido algo mal. getElementsByName devuelve la coleccion de elementos segun el orden en que aparece en el documento por que entiendo que deberia coincidir el orden que tu deseas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
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 13:15.