Foros del Web » Programando para Internet » Javascript »

Saber cuantos campos existen pero con diferentes "name"

Estas en el tema de Saber cuantos campos existen pero con diferentes "name" en el foro de Javascript en Foros del Web. Buenas Necesito trabajar con unos cuantos input que hay en una página, pero la cuestión es que cada uno tiene un name diferente del tipo ...
  #1 (permalink)  
Antiguo 28/06/2009, 03:54
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
De acuerdo Saber cuantos campos existen pero con diferentes "name"

Buenas

Necesito trabajar con unos cuantos input que hay en una página, pero la cuestión es que cada uno tiene un name diferente del tipo "nombre"+Identificador:

"hola1"
"hola6"
"hola25"

Me preguntaba si mediante javascript existe alunguna forma de recoger todos esos valores de los que de su name unicamente conocemos el prefijo y sabemos que el sufijo será un número de longitud indefinida.

Saludos.
  #2 (permalink)  
Antiguo 28/06/2009, 06:25
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: Saber cuantos campos existen pero con diferentes "name"

Hola !!!

Yo hice algo parecido para unas listas de menus...

Código html:
Ver original
  1. <ul id="navi">
  2. <li><a id="b1" href="ventas.php">&nbsp;&nbsp;1 - Gesti&oacute;n VENTAS</a>
  3. <li><a id="b2" href="compras.php">&nbsp;&nbsp;2 - Gesti&oacute;n COMPRAS</a>
  4. <li><a id="b3" href="#">&nbsp;&nbsp;3 - Gesti&oacute;n CAJA</a>
  5. </ul>

En tu caso en vez de a href tendras inputs id="hola1" etc, y en vez de un ul, podes poner un div id="navi"...

Entonces para acceder a los inputs por medio de su id, lo podes hacer algo asi ...


Código javascript:
Ver original
  1. <script language="javascript">
  2. var donde = document.getElementById('navi');
  3. max = donde.getElementsByIdTagName('input').length;
  4. alert("Cantidad de inputs: "+max)
  5.  
  6. indice=1;
  7. //y para acceder a los inputs asi:
  8.  
  9. document.getElementById('hola'+indice).value();  //
  10.  
  11. </script>

Espero te sirva el ejemplo !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #3 (permalink)  
Antiguo 28/06/2009, 09:05
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
De acuerdo Respuesta: Saber cuantos campos existen pero con diferentes "name"

El problema está en que los identificadores no son consecutivos.

Como puse anteriormente en el ejemplo, puede que sean cosas asi:
"hola25"
"hola1"
"hola6"

Es decir, que los número no llevan orden alguno. (solamente son identificadores únicos de un elemento en una base de datos, de la cual no puedo extraerlos para este script)
  #4 (permalink)  
Antiguo 28/06/2009, 20:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Saber cuantos campos existen pero con diferentes "name"

Partiendo del ejemplo de colote, puedes hacer algo como esto:
Código Javascript:
Ver original
  1. var donde = document.getElementById('navi');
  2. var campos = donde.getElementsByIdTagName('input');
  3. alert("Cantidad de inputs: "+campos.length);
  4. for (i = 0; campo = campos[i]; i++) {
  5.     if (/^hola\d+$/.test(campo.name)) {
  6.         /* Es un campo que tiene como name holaN */
  7.     }
  8. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 07/07/2009, 06:24
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Saber cuantos campos existen pero con diferentes "name"

Cita:
Iniciado por David Ver Mensaje
Partiendo del ejemplo de colote, puedes hacer algo como esto:
Código Javascript:
Ver original
  1. var donde = document.getElementById('navi');
  2. var campos = donde.getElementsByIdTagName('input');
  3. alert("Cantidad de inputs: "+campos.length);
  4. for (i = 0; campo = campos[i]; i++) {
  5.     if (/^hola\d+$/.test(campo.name)) {
  6.         /* Es un campo que tiene como name holaN */
  7.     }
  8. }
Ok, lo probaré en cuanto pueda.
Por cierto, ¿hace falta usar la variable "donde" que tu usas?
Quiero decir, que si por ejemplo mi lista no tiene asignado un ID y está formada por varias sublistas, ¿podría usar por ejemplo document.getElementsByIdTagName('input')?

Gracias
  #6 (permalink)  
Antiguo 07/07/2009, 07:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Saber cuantos campos existen pero con diferentes "name"

Puedes usar document.getElementsByTagName(), pero debes tener en cuenta que en ese caso también capturará cualquier otro input que tenga como name holaN
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 07/07/2009, 09:10
k2r
 
Fecha de Ingreso: julio-2009
Ubicación: España, madrid
Mensajes: 5
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Saber cuantos campos existen pero con diferentes "name"

Código:
for(tbl = 0; tbl < nTable.rows.length; tbl ++ )
   {
      var inputsFila = nTable.childNodes[tbl].getElementsByTagName("INPUT");
      if(inputsFila.length == 1){continue;}
      for(j = 0; j < inputsFila.length - 1; j ++ )
      {
         if(inputsFila.item(j).type == "text")
         {
            if(inputsFila.item(j).name == 'XXL')
            {
               var cantidad = new Number(inputsFila.item(j).value);
            }
            else if(inputsFila.item(j).name == 'XL')
            {
               var priceunit = new Number(inputsFila.item(j).value);
            }
            else if(inputsFila.item(j).name == 'L')
            {
               var porcTag = new Number(inputsFila.item(j).value);
            }
         }
      }
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 03:44.