Foros del Web » Programando para Internet » Javascript »

Desactivar x campos de un formulario?

Estas en el tema de Desactivar x campos de un formulario? en el foro de Javascript en Foros del Web. Buenos dias. Ante todo decir que este es mi primer post es esta magnifico foro jeje. Queria preguntaros una dudilla que tengo. Ahora mismo tengo ...
  #1 (permalink)  
Antiguo 15/07/2005, 03:36
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 19 años, 6 meses
Puntos: 0
Desactivar x campos de un formulario?

Buenos dias. Ante todo decir que este es mi primer post es esta magnifico foro jeje. Queria preguntaros una dudilla que tengo.

Ahora mismo tengo un codigo como el siguiente:

Código:
	function Disablear(Option, codPreg, chkValue)
	{
		switch(codPreg)
		{
			case 1: 
				if (Option.value == 1)
				{
					document.form_insertar.grpP2_2(0).disabled = false;
					document.form_insertar.grpP2_2(1).disabled = false;
					document.form_insertar.grpP2_2(2).disabled = false;

					document.form_insertar.chkP3_1.disabled = false;
					document.form_insertar.chkP3_2.disabled = false;
					document.form_insertar.chkP3_3.disabled = false;
					document.form_insertar.chkP3_4.disabled = false;
					document.form_insertar.chkP3_5.disabled = false;
					document.form_insertar.chkP3_6.disabled = false;
					document.form_insertar.chkP3_7.disabled = false;
					document.form_insertar.chkP3_8.disabled = false;
					document.form_insertar.chkP3_9.disabled = false;
					document.form_insertar.chkP3_10.disabled = false;
					document.form_insertar.chkP3_11.disabled = false;
					document.form_insertar.chkP3_12.disabled = false;
					document.form_insertar.chkP3_13.disabled = false;
					document.form_insertar.chkP3_14.disabled = false;
					document.form_insertar.chkP3_15.disabled = false;
					document.form_insertar.chkP3_16.disabled = false;
					document.form_insertar.chkP3_17.disabled = false;

					document.form_insertar.txtP4_1.disabled = false;
					document.form_insertar.txtP4_2.disabled = false;
					document.form_insertar.txtP4_3.disabled = false;
					document.form_insertar.txtP4_4.disabled = false;
					document.form_insertar.txtP4_5.disabled = false;

					document.form_insertar.txtP5_1.disabled = false;
					document.form_insertar.txtP5_2.disabled = false;
					document.form_insertar.txtP5_3.disabled = false;
					document.form_insertar.txtP5_4.disabled = false;
					document.form_insertar.txtP5_5.disabled = false;

					document.form_insertar.grpP6(0).disabled = false;
					document.form_insertar.grpP6(1).disabled = false;
					document.form_insertar.grpP6(2).disabled = false;
					document.form_insertar.grpP6(3).disabled = false;
					document.form_insertar.grpP6(4).disabled = false;
					document.form_insertar.grpP6(5).disabled = false;

					document.form_insertar.grpP7(0).disabled = false;
					document.form_insertar.grpP7(1).disabled = false;

					document.form_insertar.txtP8_1.disabled = false;
					document.form_insertar.txtP8_2.disabled = false;
					document.form_insertar.txtP8_3.disabled = false;

					document.form_insertar.grpP9(0).disabled = false;
					document.form_insertar.grpP9(1).disabled = false;


					document.form_insertar.chkP11_1.disabled = false;
					document.form_insertar.chkP11_2.disabled = false;
					document.form_insertar.chkP11_3.disabled = false;

					document.form_insertar.grpP12(0).disabled = false;
					document.form_insertar.grpP12(1).disabled = false;
				
				}
				
				if (Option.value == 2)
				{
					document.form_insertar.grpP2_2(0).disabled = true;
					document.form_insertar.grpP2_2(1).disabled = true;
					document.form_insertar.grpP2_2(2).disabled = true;

					document.form_insertar.chkP3_1.disabled = true;
					document.form_insertar.chkP3_2.disabled = true;
					document.form_insertar.chkP3_3.disabled = true;
					document.form_insertar.chkP3_4.disabled = true;
					document.form_insertar.chkP3_5.disabled = true;
					document.form_insertar.chkP3_6.disabled = true;
					document.form_insertar.chkP3_7.disabled = true;
					document.form_insertar.chkP3_8.disabled = true;
					document.form_insertar.chkP3_9.disabled = true;
					document.form_insertar.chkP3_10.disabled = true;
					document.form_insertar.chkP3_11.disabled = true;
					document.form_insertar.chkP3_12.disabled = true;
					document.form_insertar.chkP3_13.disabled = true;
					document.form_insertar.chkP3_14.disabled = true;
					document.form_insertar.chkP3_15.disabled = true;
					document.form_insertar.chkP3_16.disabled = true;
					document.form_insertar.chkP3_17.disabled = true;

					document.form_insertar.txtP4_1.disabled = true;
					document.form_insertar.txtP4_2.disabled = true;
					document.form_insertar.txtP4_3.disabled = true;
					document.form_insertar.txtP4_4.disabled = true;
					document.form_insertar.txtP4_5.disabled = true;

					document.form_insertar.txtP5_1.disabled = true;
					document.form_insertar.txtP5_2.disabled = true;
					document.form_insertar.txtP5_3.disabled = true;
					document.form_insertar.txtP5_4.disabled = true;
					document.form_insertar.txtP5_5.disabled = true;

					document.form_insertar.grpP6(0).disabled = true;
					document.form_insertar.grpP6(1).disabled = true;
					document.form_insertar.grpP6(2).disabled = true;
					document.form_insertar.grpP6(3).disabled = true;
					document.form_insertar.grpP6(4).disabled = true;
					document.form_insertar.grpP6(5).disabled = true;

					document.form_insertar.grpP7(0).disabled = true;
					document.form_insertar.grpP7(1).disabled = true;

					document.form_insertar.txtP8_1.disabled = true;
					document.form_insertar.txtP8_2.disabled = true;
					document.form_insertar.txtP8_3.disabled = true;

					document.form_insertar.grpP9(0).disabled = true;
					document.form_insertar.grpP9(1).disabled = true;


					document.form_insertar.chkP11_1.disabled = true;
					document.form_insertar.chkP11_2.disabled = true;
					document.form_insertar.chkP11_3.disabled = true;

					document.form_insertar.grpP12(0).disabled = true;
					document.form_insertar.grpP12(1).disabled = true;

					window.location = "insertar.asp#bot";				
				}
			break;
			
			case 2: 
				if (Option.value == 1)
				{
					document.form_insertar.grpP2_1(0).disabled = false;
					document.form_insertar.grpP2_1(1).disabled = false;
					document.form_insertar.grpP2_1(2).disabled = false;
					document.form_insertar.grpP2_1(3).disabled = false;
					document.form_insertar.grpP2_1(4).disabled = false;
					document.form_insertar.grpP2_1(5).disabled = false;
					document.form_insertar.grpP2_1(6).disabled = false;
					document.form_insertar.grpP2_1(7).disabled = false;
					document.form_insertar.grpP2_1(8).disabled = false;
				}
				
				if ((Option.value == 2)||(Option.value == 3))
				{
					document.form_insertar.grpP2_1(0).disabled = true;
					document.form_insertar.grpP2_1(1).disabled = true;
					document.form_insertar.grpP2_1(2).disabled = true;
					document.form_insertar.grpP2_1(3).disabled = true;
					document.form_insertar.grpP2_1(4).disabled = true;
					document.form_insertar.grpP2_1(5).disabled = true;
					document.form_insertar.grpP2_1(6).disabled = true;
					document.form_insertar.grpP2_1(7).disabled = true;
					document.form_insertar.grpP2_1(8).disabled = true;				
				}
			break;
			
			case 9: 
				if (Option.value == 1)
				{
					document.form_insertar.chkP9_1.disabled = false;
					document.form_insertar.chkP9_2.disabled = false;
					document.form_insertar.chkP9_3.disabled = false;
					document.form_insertar.chkP9_4.disabled = false;				
					
					document.form_insertar.grpP10_1(0).disabled = false;
					document.form_insertar.grpP10_1(1).disabled = false;
					document.form_insertar.grpP10_2(0).disabled = false;
					document.form_insertar.grpP10_2(1).disabled = false;
					document.form_insertar.grpP10_3(0).disabled = false;
					document.form_insertar.grpP10_3(1).disabled = false;
					document.form_insertar.grpP10_4(0).disabled = false;
					document.form_insertar.grpP10_4(1).disabled = false;
					document.form_insertar.grpP10_5(0).disabled = false;
					document.form_insertar.grpP10_5(1).disabled = false;
					
				}
				
				if (Option.value == 2)
				{
					document.form_insertar.chkP9_1.disabled = true;
					document.form_insertar.chkP9_2.disabled = true;
					document.form_insertar.chkP9_3.disabled = true;
					document.form_insertar.chkP9_4.disabled = true;				
					
					document.form_insertar.grpP10_1(0).disabled = true;
					document.form_insertar.grpP10_1(1).disabled = true;
					document.form_insertar.grpP10_2(0).disabled = true;
					document.form_insertar.grpP10_2(1).disabled = true;
					document.form_insertar.grpP10_3(0).disabled = true;
					document.form_insertar.grpP10_3(1).disabled = true;
					document.form_insertar.grpP10_4(0).disabled = true;
					document.form_insertar.grpP10_4(1).disabled = true;
					document.form_insertar.grpP10_5(0).disabled = true;
					document.form_insertar.grpP10_5(1).disabled = true;
					
				}
			break;
			
			case 11:
				if((chkValue == 1)||(chkValue == 2))
				{
					document.form_insertar.chkP11_3.checked = false
				}
				
				if(chkValue == 3)
				{
					document.form_insertar.chkP11_2.checked = false;
					document.form_insertar.chkP11_1.checked = false;
				}
			break;
		}
	}
Como podeis ver... es muchisimo... y es una 'repeticion' de codigo algo excesiva....

Mi pregunta es... Hay alguna manera de hacerlo con pocas lineas de codigo? algun metodo... algo?

Muchas gracias ante todo!!!!

Un Saludo
  #2 (permalink)  
Antiguo 15/07/2005, 04:56
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Te pongo este comienzo para que veas más o menos cómo lo podrías hacer... si explicaras un poco más qué es lo que quieres, cuantos campos y de qué tipo tiene el formulario, etc se te podría reducir mucho más. Pero como no sabemos nada...

El código a medio reducir sería:
function Disablear(Option, codPreg, chkValue)
{f=document['form_insertar'];
switch(codPreg)
{
case 1:
if (Option.value == 1)
{
f.grpP2_2(0).disabled = false;
f.grpP2_2(1).disabled = false;
f.grpP2_2(2).disabled = false;
for(a=1;a<18;a++){
document['form_insertar']['chkP3_'+a].disabled = false;
}
for(b=4;b<6;b++){
for(a=1;a<6;a++){
f['txtP'+b+'_'+a].disabled = false;
}
}
for(b=6:b<8;b++){
for(a=0;a<f['grpP+b].length;a++){
f['grpP'+b](a).disabled = false;
}
}

f.txtP8_1.disabled = false;
f.txtP8_2.disabled = false;
f.txtP8_3.disabled = false;

f.grpP9(0).disabled = false;
f.grpP9(1).disabled = false;


f.chkP11_1.disabled = false;
f.chkP11_2.disabled = false;
f.chkP11_3.disabled = false;

f.grpP12(0).disabled = false;
f.grpP12(1).disabled = false;

}

Un saludo y bienvenido a los foros!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 15/07/2005, 05:55
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 19 años, 6 meses
Puntos: 0
Muchas gracias :).

Eso ya lo habia pensado en hacer para resumir un poco el codigo... pero lo que decia si habia un 'algo' para que con una sola linea poder desabilitar todos los controles de un formulario, o los que empiezen por x letra...

A la funcion Disablear() (vaya nombrecito... XD) se accede en el metodo OnClick() de algun OptionButton, y lo que me hace es segun en cual pulse... pues me desactivara o me activara segun que campos del formulario, ok?

De no poderse resumir mas el codigo, muchisimas gracias por la ayuda

Un Saludo
  #4 (permalink)  
Antiguo 15/07/2005, 06:19
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
PAra deshabilitar todos:

f=document['form_insertar'];
palabra="";
for(a=0;a<f.elements.length;a++){
if(f[a].name.indexOf(palabra)!=-1){
f[a].disabled=true;

}
}

Si quieres deshabilitar alguno con algún texto determinado mete algún texto dentro de la variable palabra (siempre entre comillas).
Un saludo!
__________________
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 01:40.