Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2004, 16:57
masterjail
 
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...