Foros del Web » Programando para Internet » Javascript »

validar formulario con campo de nombre dinamico

Estas en el tema de validar formulario con campo de nombre dinamico en el foro de Javascript en Foros del Web. Hola, mi duda es la siguiente: tengo un formulario que toma valores de campos de textos con nombres similares ejemplo: Código HTML: <td class= "parrafo" ...
  #1 (permalink)  
Antiguo 19/02/2007, 23:48
Avatar de Chaudx  
Fecha de Ingreso: marzo-2002
Ubicación: Quilpué, Chilito lindo
Mensajes: 345
Antigüedad: 22 años, 1 mes
Puntos: 2
Exclamación validar formulario con campo de nombre dinamico

Hola, mi duda es la siguiente:
tengo un formulario que toma valores de campos de textos con nombres similares
ejemplo:

Código HTML:
 <td class="parrafo">RUT Representante Legal</td>
<td><input name="rut_rl" value=""
 maxlength="12" id="rut_rl" type="text" class="post1" onChange="javascript:return Rut(this)></td>
<td class="parrafo">RUT CLIENTE</td>
 <td><input name="rut_c" value=""
  maxlength="12" id="rut_c" type="text" class="post1" onChange="javascript:return Rut(this)></td>
<td class="parrafo">RUT PROVEEDOR</td>
 <td><input name="rut_p" value=""
  maxlength="12" id="rut_p" type="text" class="post1" onChange="javascript:return Rut(this)></td> 
El caso es que el formulario se genera en forma dinámica, dependiendo de los datos a ingresar y el nombre del campo "rut_x", pueden ser multiple

tengo un código javascript que me valida el valor de los campos rut_x sin ningún problema y me hace la corrección automática e instantánea.

El problema está en esta parte del código java script

window.document.form1.rut_rl.value = invertido.toUpperCase()

me gustaría saber como puedo hacer para que donde dice rut_rl tome el nombre del campo, según corresponda y haga la corrección automática, sin tener que hacer un script de validación por cada campo rut_x.

gracias por las respuestas
__________________
Servicios computacionales
Linux registered User # 306587
Ubuntu user #14563
  #2 (permalink)  
Antiguo 20/02/2007, 00:19
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: validar formulario con campo de nombre dinamico

Hola:

Ya que pasas this como parámetro, puedes valerte de ese objeto para obtener el propio value, o otros elementos/atributos del elemento o formulario:

function Rut(elemento) {
elemento.value = elemento.value.toUpperCase();
}

puedes obtener el formulario con elemento.form, el nombre del elemento con elemento.name, etc...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/02/2007, 12:10
Avatar de Chaudx  
Fecha de Ingreso: marzo-2002
Ubicación: Quilpué, Chilito lindo
Mensajes: 345
Antigüedad: 22 años, 1 mes
Puntos: 2
Re: validar formulario con campo de nombre dinamico

Gracias..
Creo que eso lo tengo claro... el punto no es obtener el value del elemento sino el name, para que me haga la corrección instantánea... he probado con

window.document.form1.texto.value = invertido.toUpperCase()

ya que la función toma el valor como "texto", pero no me funciona


adjunto código de la función

Código:
function Rut(texto)

{	

	var tmpstr = "";	

//acá tomo el valor del campo	
var campo = texto.name;	
	
	for ( i=0; i < texto.value.length ; i++ )		

		if ( texto.value.charAt(i) != ' ' && texto.value.charAt(i) != '.' && texto.value.charAt(i) != '-' )

			tmpstr = tmpstr + texto.value.charAt(i);	

	texto = tmpstr;	

	largo = texto.length;	



	if ( largo < 2 )	

	{		

		alert("Debe ingresar el rut completo")		

setTimeout('document.form1.'+ campo +'.focus()',15);	
//esto de abajo está comentado porque el nombre del campo es variable	
//	window.document.form1.rut.focus();		

		//window.document.form1.rut.select();		

		return false;	

	}	



	for (i=0; i < largo ; i++ )	

	{			

		if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9" && texto.charAt(i) !="k" && texto.charAt(i) != "K" )

 		{			

			alert("El valor ingresado no corresponde a un R.U.T valido");			

//esta es la única manera de hacer que el focus funcione en firefox
setTimeout('document.form1.'+ campo +'.focus()',15);			
			//window.document.form1.rut.focus();			

//esto de abajo está descomentado porque el nombre del campo es variable			
window.document.form1.rut.select();			

			return false;		

		}	

	}	



	var invertido = "";	

	for ( i=(largo-1),j=0; i>=0; i--,j++ )		

		invertido = invertido + texto.charAt(i);	

	var dtexto = "";	

	dtexto = dtexto + invertido.charAt(0);	

	dtexto = dtexto + '-';	

	cnt = 0;	



	for ( i=1,j=2; i<largo; i++,j++ )	

	{		

		//alert("i=[" + i + "] j=[" + j +"]" );		

		if ( cnt == 3 )		

		{			

			dtexto = dtexto + '.';			

			j++;			

			dtexto = dtexto + invertido.charAt(i);			

			cnt = 1;		

		}		

		else		

		{				

			dtexto = dtexto + invertido.charAt(i);			

			cnt++;		

		}	

	}	



	invertido = "";	

	for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )		

		invertido = invertido + dtexto.charAt(i);	



	window.document.form[1].campo.value = invertido.toUpperCase()		



	if ( revisarDigito2(texto, campo) )		

		return true;	



	return false;

}
Espero entienda lo que quiero hacer
__________________
Servicios computacionales
Linux registered User # 306587
Ubuntu user #14563
  #4 (permalink)  
Antiguo 20/02/2007, 13:07
Avatar de Chaudx  
Fecha de Ingreso: marzo-2002
Ubicación: Quilpué, Chilito lindo
Mensajes: 345
Antigüedad: 22 años, 1 mes
Puntos: 2
Re: validar formulario con campo de nombre dinamico

Bueno.. la respuesta la encontré y la diste tú caricatos... en este post...

http://www.forosdelweb.com/f13/nombres-campos-formularios-dinamicos-439277/

me faltó busca mejor


gracias
__________________
Servicios computacionales
Linux registered User # 306587
Ubuntu user #14563
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:32.