Foros del Web » Programando para Internet » Javascript »

Bloquear campos con javascript

Estas en el tema de Bloquear campos con javascript en el foro de Javascript en Foros del Web. Tengo un problema talvez sea de concepto porque recien estoy incursionando al javascrip, soy PHPero, aqui les va mi duda: Código PHP: echo  "<tr><td width=\"33%\"><b>Código consistencia:</b> </td>" ; ...
  #1 (permalink)  
Antiguo 06/01/2006, 12:29
 
Fecha de Ingreso: septiembre-2004
Mensajes: 91
Antigüedad: 19 años, 7 meses
Puntos: 0
Exclamación Bloquear campos con javascript

Tengo un problema talvez sea de concepto porque recien estoy incursionando al javascrip, soy PHPero, aqui les va mi duda:
Código PHP:
echo "<tr><td width=\"33%\"><b>Código consistencia:</b> </td>";
 
//Carga un combo con opciones de conector
 
echo "<td align=center ><select name=conector_codigo_consistencia onClick=\"habilitar(this.form,'valor_codigo_consistencia',this.conector_codigo_consistencia.value)\" > ";
echo 
"<option value=\"=\">=</option> ";
echo 
"<option value=\"IN\">IN</option> ";
echo 
"<option value=\"<>\"><></option></select></td> ";
//Consulta para mostrar solo los valores distintos
$sentencia "SELECT DISTINCT codigo_consistencia FROM  detalle_trafico ORDER BY codigo_consistencia; ";        
//Ejecuta la consulta
$consulta mysql_query($sentencia,$Sistema) or die(mysql_error()); 
//Crea un combo de seleccion
echo "<td><select name=valor_codigo_consistencia_c>"
//Asigna los resultados de la consulta a un array
while($row mysql_fetch_assoc($consulta)) { 
//Carga los resultados unicos al combo
 
echo "<option>".$row['codigo_consistencia']."</option>"

echo 
"</select><input name=valor_codigo_consistencia_t type=text size=24></td></tr>"
Aqui tengo un campo que me sirve de conector y dependiendo que elija como conector me debe habilitar o deshabilitar un combobox o un textbox, pero mi problema nace en que esto lo puedo hacer para muchos campos si se dan cuenta, todo lo genero dinamicamente, es decir me gustaria utilizar un solo javascript donde paso el form, el campo a bloquear y el valor del conector, aqui esta mi funcion que realice, me funcionaba bien para un solo tipo es decir poniendo los nombres y no querer generarlos, aqui les va mi funcion:
Código:
function habilitar(form,campo,conector){ 
	var campo_c,campo_t;
	campo_c ='form.'+campo+'_c.disabled';
	campo_t ='form.'+campo+'_t.disabled';
	//alert(campo_c+' --  '+campo_t);
	if  (conector == "IN") {
		campo_c = true;
		campo_t = false;
	} else {
		campo_c = false;
		campo_t = true;
	}
}
como veran es muy facil entender que es lo que quiero ahcer pero no me ejecuta el codigo, pero los valores si son pasados, les agradecere su ayuda infinitamente...
__________________
El amor es aquello que me da la fuerza para seguir, y ella es la bateria que Dios me dio para estar siempre activo. :corazon:
  #2 (permalink)  
Antiguo 06/01/2006, 20:35
 
Fecha de Ingreso: diciembre-2005
Ubicación: Madrid, España
Mensajes: 154
Antigüedad: 18 años, 4 meses
Puntos: 2
Creo que se podría solucionar con eval(campo_c) y eval(campo_t). Tuve un problema parecido para interpretar strings porque yo también vengo del mundo de PHP...

Saludos y suerte
  #3 (permalink)  
Antiguo 07/01/2006, 02:17
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:

Prueba...:

function habilitar(form,campo,conector) {
document.forms[form][campo + "_c"].disabled = (conector == "IN");
document.forms[form][campo + "_t"].disabled = (conector != "IN");
}

Supongo que tanto form como campo son los atributos name del formulario y el campo...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 09/01/2006, 10:58
 
Fecha de Ingreso: septiembre-2004
Mensajes: 91
Antigüedad: 19 años, 7 meses
Puntos: 0
Exclamación Bloquear campos de un form

Muchas gracias por sus respuestas, ok he probado sus recomendaciones y la verdad estoy intentando variaciones porque estoy leyendo acerca de javascript, asi llamo y le paso los valores a la funcion:
Código:
habilitar(this.form,'valor_codigo_empresa','conector_codigo_empresa')
y aquí esta la funcion que me recomendaron con algunas modificaciones:
Código:
function habilitar(form,campo,conector) {
//alert("hi: ");
document.forms[form][campo + "_c"].disabled = (document.forms[form][conector].value == "IN");
document.forms[form][campo + "_t"].disabled = (document.forms[form][conector].value != "IN");
}
Aqui vienen mis dudas, porque no me devuelve ningun valor y no se como evaluar si la cadena esta bien formada, estuve rebizando un amnual y me raye porque me decian que para trabajar con document.forms se trabaja con indices númericos, voy a seguir intentandolo, pero si pueden ayudadarme mil gracias...
__________________
El amor es aquello que me da la fuerza para seguir, y ella es la bateria que Dios me dio para estar siempre activo. :corazon:
  #5 (permalink)  
Antiguo 09/01/2006, 12: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
Hola:

Te había preparado una respuesta, pero se me fué la conexión, y te tendré que preparar otra...

Fíjate que te puse que los parámetros se correspondían con el campo name del formulario y los campos...

Tu llamas a la función habilitar con this.form como primer parámetro, así que si mantienes ese parámetro, tendrías que cambiar el cuerpo de la función...

function habilitar(form,campo,conector) {
form[campo + "_c"].disabled = (conector == "IN");
form[campo + "_t"].disabled = (conector != "IN");
}

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 09/01/2006, 14:02
 
Fecha de Ingreso: septiembre-2004
Mensajes: 91
Antigüedad: 19 años, 7 meses
Puntos: 0
Mil gracias caricatos casi me da una chiripiorca de meter, cambiar concatenar valores y nada , pero ya esta mil gracias, aqui esta para las posteriores generaciones jajaja...
Para llamarlo:
habilitar(this.form,'valor_codigo_empresa','conect or_codigo_empresa')
y la funcion:
function habilitar(form,campo,conector) {
form[campo + "_c"].disabled = (form[conector].value == "IN");
form[campo + "_t"].disabled = (form[conector].value != "IN");
}
Gracias por todo...
__________________
El amor es aquello que me da la fuerza para seguir, y ella es la bateria que Dios me dio para estar siempre activo. :corazon:
  #7 (permalink)  
Antiguo 09/01/2006, 17:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
¡Je, je!... no sé que es una "chiripiorca", pero me alegro de que solo sea "casi"...

Y también me alegro de haberte ayudado.

Saludos
__________________
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 18:18.