Foros del Web » Programando para Internet » Javascript »

usar elementos de un array para construir nombres de campos...

Estas en el tema de usar elementos de un array para construir nombres de campos... en el foro de Javascript en Foros del Web. Hola! He construido un formulario con unos campos de texto para introducir datos en una BD, en el evento onBlur de cada uno de éstos ...
  #1 (permalink)  
Antiguo 29/10/2004, 16:57
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 19 años, 6 meses
Puntos: 1
usar elementos de un array para construir nombres de campos...

Hola!

He construido un formulario con unos campos de texto para introducir datos en una BD, en el evento onBlur de cada uno de éstos llamo a una función que activa el botón de submit si los campos que yo especifico contienen algun valor. Esto lo uso para asegurarme que el usuario da valor a los campos que no pueden tener un valor nulo en la BD.

El código es más o menos algo así:


Código:
function ValidarFormulario(){
  var llenados = true;
  
  if ((document.forms[0].apellido1.value == "") ||
      (document.forms[0].nombre.value == "") ||
      (document.forms[0].edad.value == "")) {llenados = false}
	  
  if (llenados) {document.forms[0].accion.disabled = false};
  if (!llenados) {document.forms[0].accion.disabled = true};
}
Código:
<input type="text" name="apellido1" ... onBlur="ValidarFormulario()">
<input type="text" name="apellido2" ... onBlur="ValidarFormulario()">
<input type="text" name="nombre" ... onBlur="ValidarFormulario()">
<input type="text" name="edad" ... onBlur="ValidarFormulario()">
<input type="text" name="equipo_favorito" ... onBlur="ValidarFormulario()">
Ésto, así como está, funciona. Ahora bien, quiero ir un poco más allá y utilizar esta función para validar cualquier formulario de los más que tengo que hacer. He pensado en hacer una variable global que sea un array y que contenga el nombre de los campos que deben verificarse que su contenido no es nulo, así:


Código:
var campos_no_nulos = new Array("apellido1","nombre","edad");
Entonces la función quedaría de la siguiente forma:


Código:
function ValidarFormulario(){
  var i;
  var n = campos_no_nulos.length;
  var llenados = true;

  for(i = 0;i < n - 1;i++){
    if (<aqui es donde tengo el problema> == "") {llenados = false}};

  if (llenados) {document.forms[0].accion.disabled = false};
  if (!llenados) {document.forms[0].accion.disabled = true};
}
Vale ya habeis visto donde tengo el problema... no soy capaz de construir el nombre del campo que tengo que validar... ... supongo que es algo como documents.forms[0].campos_no_nulos[i] pero no tengo ni idea...

Por otra parte... ¿alguien sabe como puedo hacer esto de otra forma más elegante? ¿se podría hacer una consulta a la BD para saber que campos no pueden ser nulos y así construir el array campos_no_nulos dinámicamente (ya sé que esto es más de bases de datos que de javascript )?

Muchas gracias a quien haya leído hasta el final

Última edición por masterjail; 29/10/2004 a las 16:59 Razón: se me olvidó una palabra...
  #2 (permalink)  
Antiguo 29/10/2004, 23:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola masterjail:

Estás usando la manera indexada de usar las colecciones de objetos (por ejemplo los campos de los formularios)...
También existe la forma asociativa, poniendo entre corchetes, en vez del índice, la cadena que se corresponde con el atributo name del campo...

Tocando la línea de tu código, sería:


for(i = 0;i < n - 1;i++){
if (document.forms[0][campos_no_nulos[i]]["value"] == "") {llenados = false}};

Habrás visto la forma de indicar el atributo value, que puse deliberadamente, para que veas las posibilidades de los arrays asociativos.

Bueno, por último te voy a simplificar 2 líneas que tienes:


if (llenados) {document.forms[0].accion.disabled = false};
if (!llenados) {document.forms[0].accion.disabled = true};

lo puedes poner:
document.forms[0].accion.disabled = !llenados;

Espero que te sirva.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 30/10/2004, 10:31
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 19 años, 6 meses
Puntos: 1
Muchas gracias caricatos, lo he conseguido haciendo:

if (document.forms[0][campos_no_nulos[i]]["value"] == "") blablabla



Gracias tambien por lo de la última linea, suponia que se podia hacer algo así.
  #4 (permalink)  
Antiguo 01/11/2004, 15:31
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por masterjail
Muchas gracias caricatos, lo he conseguido haciendo:

if (document.forms[0][campos_no_nulos[i]]["value"] == "") blablabla



Gracias tambien por lo de la última linea, suponia que se podia hacer algo así.
¡Estupendo!

__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 01:48.