Foros del Web » Programando para Internet » Javascript »

Problema con habilitación y deshabilitación de checkbox

Estas en el tema de Problema con habilitación y deshabilitación de checkbox en el foro de Javascript en Foros del Web. Saludos amigos del foro... Por cierto manejos que realizo en una página web programada en PHP y JavaScript, debo tener deshabilitados los checkbox hasta que ...
  #1 (permalink)  
Antiguo 12/11/2003, 09:07
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Problema con habilitación y deshabilitación de checkbox

Saludos amigos del foro...

Por cierto manejos que realizo en una página web programada en PHP y JavaScript, debo tener deshabilitados los checkbox hasta que se dispare el evento Onchange en un select.

Aca pongo el código de la función que habilita los checkboxs:

Código PHP:
function cambiar(){
    if(
selector.value != 'inicial'){
      for (var 
i=0i<localidades.lengthi++){
        
document.all.item(localidades[i]).disabled false;
      }
    }
    else{
      for (var 
i=0i<localidades.lengthi++){
        
document.all.item(localidades[i]).disabled true;
      }    
    }
  } 
Y aca esta el select:

Código PHP:
<select name="selector" onChange="cambiar()" onMouseUp="setTimeout('resetear()',900)">
        <
option value="inicial" selected>Seleccione</option>
        <
option value="day">Diario</option>
        <
option value="week">Semanal</option>
        <
option value="month">Mensual</option>
        <
option value="year">Anual</option
El código funciona perfecto en IE 6 y en Opera 7.11(no tan perfecto, pero funciona)

Cuando lo probe en Mozilla 1.4, pues no funciona, no habilita los checkbox en el evento onChange .

Lei por aca en el foro algo de software propietario de Microsoft, alguien podría iluminarme de por donde van los tiros, o donde puedo conseguir información de cual es este código propietario???

Si pudiesen ayudarme estaría profundamente agradecida...

  #2 (permalink)  
Antiguo 12/11/2003, 09:58
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola alexa10.

El objeto all es un invento de Microsoft hasta donde yo tengo entendido (no se si NS-7 lo habrá terminado incorporando o no) por lo que te recomiendo que cambies el modo como estas direccionando.

Un método alternativo mas "estandard" es recorrer los elementos usando los métodos getElementsByTagName(), getElementsByName() y getElementById().

Dime que tiene tu arreglo localidades para decirte como adaptaría yo el código.

Saludos.
  #3 (permalink)  
Antiguo 12/11/2003, 10:26
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Gracias Kaopectate, aca te envio el array localidades

Código PHP:
  var localidades = new Array('reacciun','cantv','sede','barinas','amacuro','esparta','anaco','carupano','metropolitano','lara','pascua','carabobo','aragua'); 
Y aca esta un ejemplo del checkbox:

Código PHP:
<input type="checkbox" name="reacciun" id="reacciun" value="5" onClick="mostrar('reacciun','TDreacciun','imgReacciun','layer1','TDReacciunDatos',0,0,1,2,3)" disabled
El objeto all lo uso a lo largo del programa , tu recomendación es tratar de llevar todo al uso de getElementsByTagName(), getElementsByName() y getElementById(), en la medida de lo posible?

Muchas gracias por adelantado...

  #4 (permalink)  
Antiguo 12/11/2003, 10:34
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola de nuevo.

Si, mi recomendación es esa. Toma en cuenta que getElementById() retorna un puntero a un elemento, mientras que las otras dos retornan colecciones de objetos.

Si tienes un único tag con cada id de tu arreglo de locations, entonces la función podría quedar asi:

Código PHP:
function cambiar(){
    if(
selector.value != 'inicial'){
      for (var 
i=0i<localidades.lengthi++){
        
document.getElementById(localidades[i]).disabled false;
      }
    }
    else{
      for (var 
i=0i<localidades.lengthi++){
        
document.getElementById(localidades[i]).disabled true;
      }    
    }
  } 
Saludos.


¿Caracas?

Última edición por Kaopectate; 12/11/2003 a las 10:35
  #5 (permalink)  
Antiguo 12/11/2003, 10:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola alexa10 y Kao :

Solo voy a aportar un granito de arena, ya que la respuesta de kao es la más correcta (a mi parecer)...

Y es que recuerdo en algunas pruebas que había hecho con getElementsByName, que tal como el nombre indica tendría que devolver la colección (array o arreglo) de elementos agrupados por el atributo "name"... que en explorer (creo que la versión 5.5, y no sé si en otras...) la colección la componía por el atributo "id" y no por "name"... tal vez sea bueno que se chequease.

Saludos
  #6 (permalink)  
Antiguo 12/11/2003, 10:59
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Muchas Gracias a ambos, lo pruebo y les cuento como me fue...

Si de Caracas...

  #7 (permalink)  
Antiguo 12/11/2003, 13:27
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Saludos de nuevo....

Probe el código de Kaopectate, pero sigue sin funcionar en Mozilla, en IE y Opera sigue funcionando....

Ahora les pregunto es posible que sea porque hay otras referencias al objeto all a lo largo del código???

De todas formas les pongo aca la dirección de mi servidor de prueba, a ver si ven algo que yo no veo...

Servidor prueba

El código que da problemas es el de comparación de tráfico...

Muchas gracias por adelantado...


Última edición por alexa10; 17/11/2003 a las 14:50
  #8 (permalink)  
Antiguo 12/11/2003, 14:03
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola alexa10 y caricatos.

Ahora no tengo mucho tiempo para probar, pero debes tener en cuenta que NetScape (y Mozilla) al encontrar un "all" debe detener la ejecución del script.

Yo en tu lugar pondría algunos alert("Voy por aqui") en medio del código para saber exactamente hasta donde llega.

Saludos.
  #9 (permalink)  
Antiguo 12/11/2003, 14:05
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Olvidaba decir que si tienes mas de un elemento con el mismo atributo ID vas a tener problemas (por si acaso).

Saludos.
  #10 (permalink)  
Antiguo 12/11/2003, 14:10
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Muchas gracias Kaopectate...

Revise eso, pero no tengo dos elementos con el mismo ID, aun estoy revisando y cambiando el resto de las referencias al objeto all...

Cualquier cosa me veran por aca de nuevo...



PD: sorprendido que sea desde Caracas?
  #11 (permalink)  
Antiguo 12/11/2003, 14:18
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Busca tambien elementos con el mismo "name" que eso suele dar errores difíciles de detectar y además trata de detectar el punto donde se cae tu código en mozilla con los alert(). Cualquier cosa vemos...

Respecto a Caracas, era por saber, ya que creo que somos muy pocos los caraqueños que nos paseamos por el foro de JavaScript.

Saludos.
  #12 (permalink)  
Antiguo 12/11/2003, 15:11
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Estube revisando eso de los "name" y de los "ID", y no consigo ninguno con el mismo nombre.

Asi que voy a probar lo de los alert, a ver hasta donde llega...

Muchas Gracias...

  #13 (permalink)  
Antiguo 12/11/2003, 15:55
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Cualquier cosa avisa que voy a estar pendiente.
  #14 (permalink)  
Antiguo 13/11/2003, 09:34
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Saludos Kaopectate...

Siguiendo tu consejo de utilizar el "alert" para saber hasta donde llegaba, estube haciendo unas pruebitas y me fije que en Mozilla el alerta utilizando selector.value, no funciona, en IE funciona perfecto...

Este es el código del alert:

Código PHP:
window.alert("Este es el valor del select: " selector.value); 
Si elimino el "+ selector.value" si funciona , se me ocurre entonces que el Mozilla tiene problemas para utilizar ese tipo de referencias a las propiedades de un objeto???

, empieza a volverme loca este asunto...

Muy agradecida de antemano...
  #15 (permalink)  
Antiguo 13/11/2003, 09:54
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Usa lo siguiente...

selector[selector.selectedIndex].value

...y me cuentas!
  #16 (permalink)  
Antiguo 13/11/2003, 10:28
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Amigo Kaopectate, el JavaScript se niega a trabajar en armonia conmigo...

Sigue igual, funciona en IE y en Opera...

El programa no esta funcionando, porque al inicio, estoy utilizando esa referencia a la propiedad value del select.

Como hace uno en Mozilla para referirse a las propiedades o otras tantas cosas que se referencian de esa forma?

, sera que no tiene solución???, sera que tengo que decirle a mi jefe que tendrá que resignarse a usar IE y se olvide del Mozilla???

Kaopectate o algun otro forero que me ayude!!!

Gracias de antemano...
  #17 (permalink)  
Antiguo 14/11/2003, 07:02
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola de nuevo alexa10.

Te pido que por favor revises por mi usando mozilla, el FAQ-102, el cual de servir, debería ayudarnos en lo que necesitas, y si no funciona, entonces podremos tener un ambiente de pruebas para evitarte la verguenza de decirle a tu jefe que se olvide de Mozilla.

Saludos.
  #18 (permalink)  
Antiguo 17/11/2003, 07:43
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Saludos Kaopectate, lamento contestar tan tarde, pero el viernes no vine a la oficina ...

Pruebo y te cuento como me fue...

  #19 (permalink)  
Antiguo 17/11/2003, 09:46
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Saludos de nuevo Kaopectate...

Me parece que el JavaScript (o el mozilla) estan tratando deliberadamente de volverme loca,

Te cuento, para entender bien el script de la FAQ's, lo ejecute tanto en Mozilla e IE, y funciona perfectamente en ambos,

Cuando lo adecue a mis necesidades, pues no funciona en Mozilla, porque en IE sigue funcionando...

Inclusive lo probe incluyendo los campos de texto en mi aplicación...

, necesito ayuda!!!


Muy agradecida con cualquiera que pueda ayudarme...

PD: el asunto en lugar de mejorar solo empeora, ahora tampoco funciona en Opera (aunque este no es tan importante).

Última edición por alexa10; 17/11/2003 a las 09:52
  #20 (permalink)  
Antiguo 17/11/2003, 11:05
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Saludos de nuevo...

Probando y probando, por fin he logrado habilitar los checkbox, se me presenta un problemita más adelante, pero voy poco a poco,

Les cuento como lo resolví:

Código PHP:
<select name="selector" onChange="cambiar(this.value)"
y en la función lo recibo asi:

Código PHP:
function cambiar(valor
Que tonta la solución, no??? , por lo menos esta listo...

Después les informo si resolví lo otro y como lo hice

  #21 (permalink)  
Antiguo 17/11/2003, 15:15
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 21 años, 9 meses
Puntos: 0
Ya lo resolví todo...

Después de hacer muchas pruebas, me di cuenta que para hacer referencia a los elementos del formulario en Mozilla, estos deben estar dentro de las etiquetas <form></form>, (que me corrijan si estoy equivocada)

Asi que las puse y ahora todo funciona bien, excepto unas cositas, pero voy a abrir un tema nuevo porque no tiene que ver con esto...

Muchas gracias a todos ...


Última edición por alexa10; 17/11/2003 a las 15:16
  #22 (permalink)  
Antiguo 17/11/2003, 15:22
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola alexa10.

Disculpa que había perdido el hilo de tu hilo (*).

Me alegra que te haya funcionado, sin embargo quería comentarte que muchas veces lo que uno ve como un capricho de navegadores como Mozilla, en realidad son muestras de consistencia. El poner el elemento al que te estas refiriendo fuera del <form> es un error, sin embargo papa Explorer te lo tolera.

El problema desde mi punto de vista es la alcahuetería de IE y no la rigidez de Mozilla.

Bueno, repito, ¡que bueno que ya funciona!!!

Saludos.




(*) Valga la redundancia
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 19:35.