Foros del Web » Programando para Internet » Javascript »

activar atributo readOnly en tiempo de ejecucion

Estas en el tema de activar atributo readOnly en tiempo de ejecucion en el foro de Javascript en Foros del Web. Hola, no logro entender porque no puedo agregar el atributo de solo lectura a un elemento de un arreglo de campos text usando javascript, sin ...
  #1 (permalink)  
Antiguo 28/09/2006, 13:06
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años
Puntos: 4
activar atributo readOnly en tiempo de ejecucion

Hola, no logro entender porque no puedo agregar el atributo de solo lectura a un elemento de un arreglo de campos text usando javascript, sin embargo si lo hago con vbscript si funciona, ¿ Qué está mal ?

<script>

function verificar_activacion(id)
{
if(document.forms(0).activar_precio_excepcional(id ).checked==true)
{
document.forms(0).precio(id).ReadOnly=false;
alert(document.forms(0).precio(id).ReadOnly); /* Me regresa false, */
}
else
{ document.forms(0).precio(id).ReadOnly=true;
alert(document.forms(0).precio(id).ReadOnly); /* Me regresa true, sin embargo si puedo escribir, cosa qie no debería de pasar */
}
}
</script>

esto mismo en vbscript si funciona :

<script language="vbscript">

function verificar_activacion(id)
if(document.forms(0).activar_precio_excepcional(id ).checked=true)then
document.forms(0).precio(id).ReadOnly=false
else
document.forms(0).precio(id).ReadOnly=true ' Aqui el campo HTML adquiere la propiedad de solo lectura y funciona bien
end if
end function

</script>

Los campos HTML son :

<input name=precio><input type=checkbox onclick="verificar_activacion(<%=contador_asp%>)">

donde contador_asp es un numero inicial desde 0 de un bucle que repite los campos HTML 13 veces.

Última edición por orharo2003; 28/09/2006 a las 13:31
  #2 (permalink)  
Antiguo 28/09/2006, 13:44
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años
Puntos: 4
Ups, ya lo resolvi, la palabra era readOnly en vez de ReadOnly.
Suele pasar...
  #3 (permalink)  
Antiguo 28/09/2006, 13:49
Avatar de mape367  
Fecha de Ingreso: noviembre-2004
Ubicación: CDE, Paraguay
Mensajes: 213
Antigüedad: 19 años, 5 meses
Puntos: 3
Buenas orharo2003

Me gustaría ayudarte.

Primero, te recomiendo que para obtener los elementos (campos) del formulario lo hagas asi:

El la definicion de cada campo agrega el atributo id
Código:
<input type="text" name="campo" id="campo">
Luego, para llamarlo lo haces asi:
Código:
document.getElementById('campo').readOnly=true
A primera vista no hay diferencias, pero cuando necesites manejar datos de más de un formulario en una misma pagina, te ahorras el trabajo de tener que recordar de que formulario provienen los campos, tambien en el caso de que agregues o quites un formulario, te queda menos codigo que cambiar.

Ahora referente a lo del ReadOnly, te permite cambiar porque no ha perdido el enfoque. Lo que debes hacer es tirar el foco del cursor a otro campo del formulario:
Código:
document.getElementById('campo_2').focus()
Con eso solucionas el problema.

Saludos
  #4 (permalink)  
Antiguo 28/09/2006, 13:55
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años
Puntos: 4
Gracias por tu respuesta, te lo agradezco mucho.
Saludos !!!!
  #5 (permalink)  
Antiguo 29/09/2006, 01:26
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:

Hay otras cosas para destacar en el código:

forms es una colección o array y no un método o función, así que no se selecciona con paréntesis sino con corchetes:
document.forms(0) Mal
document.forms[0] correcto.

Puedes omitir los id's en los formularios, con el name es suficiente (con algunas excepciones como el uso de la etiqueta label)

No está claro en el código si precio es un array, de ser así también debería estar con corchetes (precio[])

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:17.