Foros del Web » Programando para Internet » Javascript »

Como recorrer todos los <input> de un form?

Estas en el tema de Como recorrer todos los <input> de un form? en el foro de Javascript en Foros del Web. Hola a todos los del foro... Tengo el siguiente form: Código HTML: <form id= "frmSearch" name= "frmSearch" action= "" method= "post" onsumit= "return valida()" > ...
  #1 (permalink)  
Antiguo 01/10/2013, 08:42
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Como recorrer todos los <input> de un form?

Hola a todos los del foro...

Tengo el siguiente form:
Código HTML:
 <form id="frmSearch" name="frmSearch" action="" method="post" onsumit="return valida()">
       <input type="text" id= "nombre" name="nombre">
       <select id="id_select" name="cmbWebSite">
         <option value="0">Seleccione una opcion</option>
         <option value="1">Nacional</option>
         <option value="2">extrangero</option>
       </select>
       <input type="radio" checked="true" name="optionsActive" value="S"><span>Si</span>
       <input type="radio" checked="true" name="optionsActive" value="N"><span>No</span>
     </form> 
Específicamente lo que quiero es hacer una funcion javascript, que me verifique si el textbox nombre y el combobox contienen datos, osea si digito algo en el textbox y si selecciono algo en el combo que no sea el value 0. Cabe mencionar que dicha funcion debe de ser lo suficientemente dinamica, esto quiere decir que si yo deseo insertarle al form otro textbox como por ejemplo: identificacion, la funcion javascript debe de ser capaz de validar ese nuevo textbox que inserte en el form, sin necesidad de modificar nada el js.

Tenia lo siguiente pero no me funca:
Código HTML:
function valida(){
  var elem = document.frmSearch.elements.getElementsByTagName('input');
  var errors = 0; 
  for(i=0; i<elem.length; i++){
    if(elem[i].value=="" || elem[i].value==" ")
    ++errors;
  }
 if(errors>=5){
    alert('Rellena todo!');
    return false;
  }else
    return true;
} 
  #2 (permalink)  
Antiguo 01/10/2013, 08:54
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Como recorrer todos los <input> de un form?

No te dimos la solución en el otro tema?
  #3 (permalink)  
Antiguo 01/10/2013, 08:57
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Como recorrer todos los <input> de un form?

Código Javascript:
Ver original
  1. function validar(){
  2. var elem = document.frmSearch.elements.getElementsByTagName('input');
  3. var errors = 0;
  4. for(i=0; i<elem.length; i++){
  5. if(elem[i].value=="" || elem[i].value==" "){
  6. ++errors;
  7. }
  8. }
  9. if(errors>=5){
  10. //algo +
  11. return false;
  12. }else{
  13. //algo +
  14. return true;
  15. }
  16. }
  #4 (permalink)  
Antiguo 01/10/2013, 09:17
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Respuesta: Como recorrer todos los <input> de un form?

Es que todavia no me funciona, tengo la funcion javascript tal y como me dices tu y el form tal y como lo puse en el tema y no me funca... ahora dime q puede ser ?
  #5 (permalink)  
Antiguo 01/10/2013, 09:19
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Como recorrer todos los <input> de un form?

El código es sintácticamente correcto... Aseguraté de que los nombres de la función coinciden. Yo puse validar() en vez de valida()...Igual es eso. Si no sigue debugueando, aunque no verás nada raro.
  #6 (permalink)  
Antiguo 01/10/2013, 10:10
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 7
Respuesta: Como recorrer todos los <input> de un form?

Cita:
Iniciado por adryan310 Ver Mensaje
Hola a todos los del foro...

Tengo el siguiente form:
Código HTML:
 <form id="frmSearch" name="frmSearch" action="" method="post" onsumit="return valida()">
       <input type="text" id= "nombre" name="nombre">
       <select id="id_select" name="cmbWebSite">
         <option value="0">Seleccione una opcion</option>
         <option value="1">Nacional</option>
         <option value="2">extrangero</option>
       </select>
       <input type="radio" checked="true" name="optionsActive" value="S"><span>Si</span>
       <input type="radio" checked="true" name="optionsActive" value="N"><span>No</span>
     </form> 
Específicamente lo que quiero es hacer una funcion javascript, que me verifique si el textbox nombre y el combobox contienen datos, osea si digito algo en el textbox y si selecciono algo en el combo que no sea el value 0. Cabe mencionar que dicha funcion debe de ser lo suficientemente dinamica, esto quiere decir que si yo deseo insertarle al form otro textbox como por ejemplo: identificacion, la funcion javascript debe de ser capaz de validar ese nuevo textbox que inserte en el form, sin necesidad de modificar nada el js.

Tenia lo siguiente pero no me funca:
Código HTML:
function valida(){
  var elem = document.frmSearch.elements.getElementsByTagName('input');
  var errors = 0; 
  for(i=0; i<elem.length; i++){
    if(elem[i].value=="" || elem[i].value==" ")
    ++errors;
  }
 if(errors>=5){
    alert('Rellena todo!');
    return false;
  }else
    return true;
} 

Hola de nuevo adryan310, el código tiene varios errores.

1. En el form tienes onsumit y es onsubmit

2. En en Javascript en la línea:

Código Javascript:
Ver original
  1. document.frmSearch.elements.getElementsByTagName('input');

quítale el elements quedando así:

Código Javascript:
Ver original
  1. document.frmSearch.getElementsByTagName('input');

Y listo, el código funciona.

Saludos.
  #7 (permalink)  
Antiguo 01/10/2013, 10:29
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Como recorrer todos los <input> de un form?

@dAvidcA No es necesario eliminar 'elements' ya que contiene el array con todos los elementos hijos del formulario, no obstante a la hora de obtenerlos con getElements checkearía todos sus descendientes, así que es lo mismo.

El principal error era el atributo, que igual se le habría cortado al hacer el breakline.
  #8 (permalink)  
Antiguo 01/10/2013, 11:06
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 7
Respuesta: Como recorrer todos los <input> de un form?

Cita:
Iniciado por PHPeros Ver Mensaje
@dAvidcA No es necesario eliminar 'elements' ya que contiene el array con todos los elementos hijos del formulario, no obstante a la hora de obtenerlos con getElements checkearía todos sus descendientes, así que es lo mismo.

El principal error era el atributo, que igual se le habría cortado al hacer el breakline.
PHPeros es necesario eliminar el elements porque en ese caso es de tipo Array, por lo que no aplicaría el método getElementsByTagName.

Tira este error en la consola:
TypeError: Object #<HTMLFormControlsCollection> has no method 'getElementsByTagName'


Etiquetas: funcion, input, js
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:46.