Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Acceder a array de formulario especifico

Estas en el tema de Acceder a array de formulario especifico en el foro de Javascript en Foros del Web. Hola buenas ojalá puedan orientarme un poco Tengo una pagina con varios formularios que se generan desde PHP, lo que necesito es manipular un input ...
  #1 (permalink)  
Antiguo 09/11/2017, 15:04
 
Fecha de Ingreso: febrero-2016
Mensajes: 43
Antigüedad: 8 años, 2 meses
Puntos: 2
Acceder a array de formulario especifico

Hola buenas ojalá puedan orientarme un poco

Tengo una pagina con varios formularios que se generan desde PHP, lo que necesito es manipular un input (que es un array) del formulario seleccionado

Código HTML:
Ver original
  1. <input type="text" name="nombre[]" value="fulanito" disabled>

Para acceder al array del formulario uso
Código Javascript:
Ver original
  1. document.forms['miFormulario']['nombre[]']

Todo bien hasta aqui.

Se complica el asunto cuando el formulario seleccionado tiene un solo input nombre, solo en este caso no puedo acceder a ese input

mi codigo completo es este

Código Javascript:
Ver original
  1. function edita_form(a){
  2.  
  3.  var form = document.forms[a]['nombre[]'];
  4.  var c = form.length;
  5.  
  6.  for(var a = 0; a < c; a++){
  7.   form[a].removeAttribute('disabled');
  8.  }
  9. }

Mis formularios

Código HTML:
Ver original
  1. <form action="" name="primerForm">
  2.         <input type="text" name="nombre[]" value="Perenganito" disabled>
  3.         <input type="text" name="nombre[]" value="Fulanito" disabled>
  4.         <input type="button" value="Edita campos" onclick="edita_form('primerForm')">
  5.     </form>
  6.     <hr>
  7.     <form action="" name="segundoForm">
  8.         <input type="text" name="nombre[]" value="Sutanito" disabled>
  9.         <input type="text" name="nombre[]" value="Fulanito" disabled>
  10.         <input type="text" name="nombre[]" value="Perengano" disabled>
  11.         <input type="button" value="Edita campos" onclick="edita_form('segundoForm')">
  12.     </form>
  13.     <hr>
  14.     <form action="" name="tresForm">
  15.         <input type="text" name="nombre[]" value="Juan" disabled>
  16.         <input type="button" value="Edita campos" onclick="edita_form('tresForm')">
  17.     </form><!-- Es en este último form que no me habilita el input nombre -->
  18.     <hr>

ojala me haya explicado, no se me ocurre que estoy haciendo mal porque estoy muy verde javascript

Gracias por tu ayuda!
  #2 (permalink)  
Antiguo 09/11/2017, 17:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Acceder a array de formulario especifico

Si buscas a todos los <input type="text"> del formulario al cual pertenece el botón pulsado y luego procedes a recorrer al conjunto resultante para habilitar/inhabilitar a los elementos encontrados, no importará si hay uno o diez mil.

Código Javascript:
Ver original
  1. function edita_form(a){
  2.     var form = document.querySelector("form[name=" + a + "]"),
  3.         inputs = form.querySelectorAll("input[type=text]");
  4.  
  5.     [].forEach.call(inputs, function(input){
  6.         input.disabled = !input.disabled;
  7.     });
  8. }

La línea en donde aparece la línea [].forEach.call representa a una instancia del método Array.prototype.forEach que itera sobre el conjunto de elementos indicado. Los métodos .querySelector() y .querySelectorAll() son métodos selectores avanzados para seleccionar elementos del DOM los cuales, además, permiten utilizar selectores CSS.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 09/11/2017 a las 17:27 Razón: Explicación de los métodos usados
  #3 (permalink)  
Antiguo 10/11/2017, 13:20
 
Fecha de Ingreso: febrero-2016
Mensajes: 43
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: Acceder a array de formulario especifico

Cita:
Iniciado por Alexis88 Ver Mensaje
Si buscas a todos los <input type="text"> del formulario al cual pertenece el botón pulsado y luego procedes a recorrer al conjunto resultante para habilitar/inhabilitar a los elementos encontrados, no importará si hay uno o diez mil.

Código Javascript:
Ver original
  1. function edita_form(a){
  2.     var form = document.querySelector("form[name=" + a + "]"),
  3.         inputs = form.querySelectorAll("input[type=text]");
  4.  
  5.     [].forEach.call(inputs, function(input){
  6.         input.disabled = !input.disabled;
  7.     });
  8. }

La línea en donde aparece la línea [].forEach.call representa a una instancia del método [URL="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/forEach"][inline]Array.prototype.forEach[/inline][/URL] que itera sobre el conjunto de elementos indicado. Los métodos [URL="https://developer.mozilla.org/es/docs/Web/API/Document/querySelector"][inline].querySelector()[/inline][/URL] y [URL="https://developer.mozilla.org/es/docs/Web/API/Document/querySelectorAll"][inline].querySelectorAll()[/inline][/URL] son métodos selectores avanzados para seleccionar elementos del DOM los cuales, además, permiten utilizar selectores CSS.

wow muchas gracias por la ayuda! y gracias por la explicación. Sin duda mucho que aprender.

Funciono de maravilla!

Etiquetas: especifico, form, formulario, input, java
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 19:51.