Foros del Web » Programando para Internet » Javascript »

manipular nombre campo con script

Estas en el tema de manipular nombre campo con script en el foro de Javascript en Foros del Web. Existe alguna de forma de manipular los nombres de los input text u otros objetos del objeto form como checkbox,select,password,etc. me refiero a los siguiente: ...
  #1 (permalink)  
Antiguo 21/02/2005, 17:31
Avatar de acrosys  
Fecha de Ingreso: noviembre-2003
Ubicación: Santiago
Mensajes: 9
Antigüedad: 20 años, 5 meses
Puntos: 0
manipular nombre campo con script



Existe alguna de forma de manipular los nombres de los input text u otros
objetos del objeto form como checkbox,select,password,etc.

me refiero a los siguiente:

En este script


<script languaje="javascript">

function validar(form)
{
var error = "Por favor, antes de enviar el formulario,\ncomplete los siguientes campos:\n\n";
var a = ""

if (form.nombre.value == "") { a += " Nombre real\n"; }
if (form.telefono.value == "") { a += " Teléfono\n"; }
if (form.ciudad.value == "") { a += " Ciudad\n"; }

if (a != "") { alert(error + a); return true; }

form.submit()
}
</script>


Funciona bien, se validan los 3 campos nombre,telefono,ciudad llamandolos por su name
pero seria posible o como se hace manipulando la propiedad name del campo para, cuando se trata de
muchos campos poder hacerlo dentro de 1 ciclo for next o while

Osea, si los campos text, en vez de llamarse nombre, telefono, ciudad se llamaran textv1, textv2, textv3
hacer los siguiente:


function validar(form,nombrecampo)
{ ...........

nombrecampo = 'textv'+i // nombrecampo pasaria a llamarse textv1


if (form.nombrecampo.value == "") { a += " Nombre real\n"; }

if (a != "") { alert(error + a); return true; }

.....................
}
</script>


No he podido encontrar como manipular los nombre de campos en referencia al objeto
document.form.nombre_que_deseo_manipular.propiedad

Espero me entiendan y puedan darme una manito...
  #2 (permalink)  
Antiguo 22/02/2005, 03:17
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Se me ocurre lo siguiente:

Como no siempre el name del campo se corresponde con lo que pregunta (por ejemplo puede preguntar el teléfono en un campo con el name "t1", te sugiero hacer una cosa:

Haz un array con los names de los campos que quieres revisar y otro con el texto que quieras que aparezca. Por ejemplo así:
Código:
<script>
campos=["tf1","nom","ed"];
textos=["Teléfono","Nombre","Edad"];
</script>
Es importante que coincidan en orden el name del campo con el texto correspondiente.

Luego haces la function:
Código:
<script>
function validar(esto){
bien=true;
var error = "Por favor, antes de enviar el formulario,\ncomplete los siguientes campos:\n\n";
for(a=0;a<campos.length;a++){
if(esto[campos[a]].value==""){
error+textos[a]+"\n";
bien=false;
}

}
if(!bien){
alert(error);
return false;
}
}
</script>
¿Te sirve?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 22/02/2005, 13:09
Avatar de acrosys  
Fecha de Ingreso: noviembre-2003
Ubicación: Santiago
Mensajes: 9
Antigüedad: 20 años, 5 meses
Puntos: 0
KarlanKas, si algo de eso ya habia pensado, pero la verdad es que deseo evitarme el tener que escribir todos los campos en un array y que me tome los campos name desde el formulario.
De todas las formas que lo he intentado me dice que no existe el objeto, o sea no es capaz de traducir que nombre_campo no es un literal (objeto) si no una variable que corresponde a la propiedad name de un campo.
  #4 (permalink)  
Antiguo 22/02/2005, 16:44
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Pues entonces lo puedes hacer con números:

<script>
function validar(esto){
bien=true;
var error = "Por favor, antes de enviar el formulario,\ncomplete los siguientes campos:\n\n";
for(a=0;a<esto.elements.length;a++){
if(esto[a].value=="" && esto[a].type="text"){
error+"- "esto[a].name+"\n";
bien=false;
}

}
if(!bien){
alert(error);
return false;
}
}
</script>

Así comprueba que ningún input text está vacío... ¿te sirve así?

EDITADO:

Es importante que la llamada a la función la hagas así:

<form name="loquesea" onsubmit="return validar(this)" ...>
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 22/02/2005 a las 16:47
  #5 (permalink)  
Antiguo 22/02/2005, 18:00
Avatar de acrosys  
Fecha de Ingreso: noviembre-2003
Ubicación: Santiago
Mensajes: 9
Antigüedad: 20 años, 5 meses
Puntos: 0
KarlanKas

Muchas gracias, lo voy a probar esta noche pero leyendo el codigo parece bastente eficiente.... muchas gracias. Yo no soy muy experto en javascript (nunca he tenido tiempo de profundizar mucho en este lenguaje ...) asi es que tu ayuda ha sido fundamental ...
Gracias
  #6 (permalink)  
Antiguo 22/02/2005, 18:19
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Espero que te sirva!

Y si tienes alguna duda sobre cómo funciona te ruego que me lo hagas saber. Aquí tb estamos para ayudar a aprender!

Un saludo y de nada!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 16:34.