Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] No funciona reactivacion de funciones

Estas en el tema de No funciona reactivacion de funciones en el foro de Javascript en Foros del Web. Hola a todos nuevamente. Tengo la siguiente funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function habil_des ( ) { //funcion de activar o desactivar ...
  #1 (permalink)  
Antiguo 13/03/2015, 05:27
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
No funciona reactivacion de funciones

Hola a todos nuevamente. Tengo la siguiente funcion:

Código Javascript:
Ver original
  1. function habil_des(){//funcion de activar o desactivar palabras de ayudaejeeje
  2.  
  3.     if (document.getElementById("inp").checked == true){
  4.         visible()
  5.         document.getElementById("visib").onmouseup = "none"
  6.         document.getElementById("visib").onmousedown = "none"
  7.     }
  8.     if (document.getElementById("inp").checked == false){
  9.         invisible()
  10.         document.getElementById("visib").onmouseup = "invisible()"
  11.         document.getElementById("visib").onmousedown = "visible()"
  12.     }
  13.  
  14. }

La uso para, al activar un input de tipo checkbox, desactive otro de tipo Button. Al activar el checkbox, desactiva perfectamente el button, pero al desactivar checkbox no vuelve al button a su estado original ¿Alguien podria ayudarme en este problema? Gracias
  #2 (permalink)  
Antiguo 13/03/2015, 08:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No funciona reactivacion de funciones

Estás asignando los valores de la manera incorrecta. No puedes asignar el valor none ―que se usa en CSS― a un evento, además, en el segundo bloque, asignas una cadena, no una función en sí. Eso quizá estaría bien en la definición que hagas en el marcado (HTML), pero no en el código JavaScript.

Quedaría más ordenado y sin tantas incoherencias si lo dejaras así:

Código Javascript:
Ver original
  1. function habil_des(){
  2.     if (document.getElementById("inp").checked == true){
  3.         visible();
  4.     }
  5.     else{
  6.         invisible();
  7.     }
  8. }

Y en cada una de esas funciones es que harías el cambio de estado del elemento, aunque si lo que tienes que hacer es simple, entonces ni siquiera es necesario el uso de otras funciones, pues podrías hacerlo dentro de las condiciones.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 14/03/2015, 10:28
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: No funciona reactivacion de funciones

Cita:
Iniciado por Alexis88 Ver Mensaje
Estás asignando los valores de la manera incorrecta. No puedes asignar el valor none ―que se usa en CSS― a un evento, además, en el segundo bloque, asignas una cadena, no una función en sí. Eso quizá estaría bien en la definición que hagas en el marcado (HTML), pero no en el código JavaScript.

Quedaría más ordenado y sin tantas incoherencias si lo dejaras así:

Código Javascript:
Ver original
  1. function habil_des(){
  2.     if (document.getElementById("inp").checked == true){
  3.         visible();
  4.     }
  5.     else{
  6.         invisible();
  7.     }
  8. }

Y en cada una de esas funciones es que harías el cambio de estado del elemento, aunque si lo que tienes que hacer es simple, entonces ni siquiera es necesario el uso de otras funciones, pues podrías hacerlo dentro de las condiciones.

Saludos
Muchas gracias por tu respuesta, pero aun no me queda claro como reactivar los inputs de "onmousedown" y "onmouseup"

Gracias
  #4 (permalink)  
Antiguo 14/03/2015, 11:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No funciona reactivacion de funciones

Con activar, ¿te refieres a que sea visible o a modificar el valor del atributo disabled?

Muéstranos el código de tus funciones.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 14/03/2015, 11:39
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: No funciona reactivacion de funciones

Cita:
Iniciado por Alexis88 Ver Mensaje
Con activar, ¿te refieres a que sea visible o a modificar el valor del atributo disabled?

Muéstranos el código de tus funciones.

Este es el codigo de java script que actua sobre los input:

Código Javascript:
Ver original
  1. function habil_des(){//funcion de activar o desactivar palabras de ayudaejeeje
  2.  
  3.     if (document.getElementById("inp").checked == true){
  4.         visible()
  5.         document.getElementById("visib").onmouseup = ("disabled")
  6.         document.getElementById("visib").onmousedown = ("disabled")
  7.     }
  8.     else{
  9.         invisible()
  10.         document.getElementById("visib").innerHTML.onmousedown = ("invisible()")
  11.         document.getElementById("visib").innerHTML.onmouseup = ("visible()")
  12.        
  13.     }
  14.  
  15. }

Estos son los inputs:

Código HTML:
Ver original
  1. <input type="button" onmousedown= "visible()" onmouseup = "invisible()" value = "palabras disponibles" class = "visib" Id = "visib">Activar ayuda fija
  2.     <input type = "checkbox" checked class = "perman" value = "false" id = "inp" onclick = "habil_des()">
  #6 (permalink)  
Antiguo 14/03/2015, 12:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No funciona reactivacion de funciones

Me refería a tus funciones 'visible' e 'invisible'.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 15/03/2015, 04:31
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: No funciona reactivacion de funciones

Cita:
Iniciado por Alexis88 Ver Mensaje
Me refería a tus funciones 'visible' e 'invisible'.
ah, claro, perdona...

Código Javascript:
Ver original
  1. function visible(){//hace visible las palabras de ayuda
  2.     document.getElementById("txt").style.visibility = 'visible'
  3. }
  4. //------------------------------------------------------------------------------------------------
  5. function invisible(){//devuelve invisible las palabras de ayuda
  6.     document.getElementById("txt").style.visibility = 'hidden'
  7. }
  #8 (permalink)  
Antiguo 15/03/2015, 10:53
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No funciona reactivacion de funciones

Si lo que buscas es mostrar/ocultar al elemento document.getElementById("txt") al posar/quitar el cursor del mouse del elemento document.getElementById("visib"), solo tienes que hacer esto:

Código Javascript:
Ver original
  1. var visib = document.getElementById("visib"),
  2.     txt = document.getElementById("txt");
  3.  
  4. visib.addEventListener("mouseover", function(){
  5.     txt.style.visibility = "visible";
  6. }, false);
  7.  
  8. visib.addEventListener("mouseleave", function(){
  9.     txt.style.visibility = "hidden";
  10. }, false);

DEMO

Aunque esto también puedes hacerlo con CSS:

Código CSS:
Ver original
  1. #txt{
  2.     visibility: hidden;
  3. }
  4.  
  5. #visib:hover ~ #txt{
  6.     visibility: visible;
  7. }

DEMO

Particularmente, me decantaría por la segunda opción ya que, además de ahorrar algunas líneas de código, funcionará incluso si el usuario desactiva JavaScript de su navegador.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 15/03/2015, 15:04
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: No funciona reactivacion de funciones

Creo que no me he expresado bien, tengo dos inputs y un texto que por defecto lo tengo como invisible.

El primer input, el button, hace visible el texto cuando lo pulso, y al soltar el click vuelve al estado invisible el texto. El segundo input, el checkbox, mantiene visible el texto al activarlo, e invisible al desactivarlo. Ademas, el checkbox, he logrado desactivar el input button cuando esta activado, pero al desactivar el checkbox, el input button sigue desactivado y no logro hacer nada para conseguir activarlo. Ese es el problema de todo.
  #10 (permalink)  
Antiguo 15/03/2015, 15:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No funciona reactivacion de funciones

Te mostré cómo hacer visibles/invisibles a los elementos en base a dos eventos, solo te queda utilizar otros eventos y habrás solucionado el problema, aunque, como te dije, para estas cosas, puedes optar por CSS.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 16/03/2015, 03:27
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: No funciona reactivacion de funciones

Lo que busco no es ocultar o hacer visible un elemento, ya que esto lo consegui previantente con la funcion:

Funciones para cambiar estilo de CSS.
Código Javascript:
Ver original
  1. function visible(){//hace visible las palabras de ayuda
  2.     document.getElementById("txt").style.visibility = 'visible'
  3. }
  4. function invisible(){//devuelve invisible las palabras de ayuda
  5.     document.getElementById("txt").style.visibility = 'hidden'
  6. }


El problema es este input:

Código HTML:
Ver original
  1. <input type = "checkbox" checked class = "perman" value = "false" id = "inp" onclick = "habil_des()">

que al activarlo desactiva este input:
Código HTML:
Ver original
  1. <input type="button" onmousedown= "visible()" onmouseup = "invisible()" value = "palabras disponibles" class = "visib" Id = "visib">

Pero, al desactivar el primer input, no vuelve a activar el segundo. No es una cuestion de que se visualice o no un texto, es que el button deja de funcionar, al desactivar el checkbox.

He probado con esta funcion, pero no me ha dado el resultado que buscaba:
Código Javascript:
Ver original
  1. function habil_des(){//funcion de activar o desactivar palabras de ayudaejer
  2.  
  3.     if (document.getElementById("inp").checked == true){
  4.         visible()
  5.         document.getElementById("visib").onmouseup = ("disabled")
  6.         document.getElementById("visib").onmousedown = ("disabled")
  7.     }
  8.     else{
  9.         invisible()
  10.         document.getElementById("visib").innerHTML.onmousedown = ("invisible()")
  11.         document.getElementById("visib").innerHTML.onmouseup = ("visible()")
  12.        
  13.     }
  14.  
  15. }

Esta función logra hacer que al activar el checkbox, el texto se vuelva visible, que es lo que busco, y tambien que al desactivar el checkbox, el texto se vuelva invisible. Esto perfecto. Pero ademas, con estas lineas he intentado desabilitar el button al activar el checkbox:

Código Javascript:
Ver original
  1. if (document.getElementById("inp").checked == true){
  2.         visible()
  3.         document.getElementById("visib").onmouseup = ("disabled")
  4.         document.getElementById("visib").onmousedown = ("disabled")
  5.     }

y he intentado hacer el proceso inverso. Reactivar el button al desactivar el checkbox:

Código Javascript:
Ver original
  1. else{
  2.         invisible()
  3.         document.getElementById("visib").innerHTML.onmousedown = ("invisible()")
  4.         document.getElementById("visib").innerHTML.onmouseup = ("visible()")
  5.        
  6.     }

es esta ultima parte donde no logro avanzar. No reactiva el button al desactivar el checkbox. No se si me he expresado bien esta vez.

Saludos y gracias por vuestra paciencia.
  #12 (permalink)  
Antiguo 16/03/2015, 07:10
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 10 años
Puntos: 4
Respuesta: No funciona reactivacion de funciones

Vale, suponemos que ya tienes lista y solucionada la primera parte que consiste en hacer visible o invisible el texto.
La segunda parte, desactivar el boton:
Para ello si quieres que se deshabiliten al activar el input tienes que hacerlo con la propiedad disabled, no onmouse.

Código Javascript:
Ver original
  1. document.getElementById("visib").disabled= "true";

Y si es el caso de que quieres hacerlo al pasar el raton por encima crea una nueva función del mismo tipo.
Un saludo
  #13 (permalink)  
Antiguo 16/03/2015, 09:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: No funciona reactivacion de funciones

Esto:

Cita:
Iniciado por pvsge Ver Mensaje
Código Javascript:
Ver original
  1. function habil_des(){//funcion de activar o desactivar palabras de ayudaejer
  2.  
  3.     if (document.getElementById("inp").checked == true){
  4.         visible()
  5.         document.getElementById("visib").onmouseup = ("disabled")
  6.         document.getElementById("visib").onmousedown = ("disabled")
  7.     }
  8.     else{
  9.         invisible()
  10.         document.getElementById("visib").innerHTML.onmousedown = ("invisible()")
  11.         document.getElementById("visib").innerHTML.onmouseup = ("visible()")
  12.        
  13.     }
  14.  
  15. }
No tiene sentido. Para habilitar/deshabilitar un elemento del DOM, tienes que asignar o bien el valor true o false al atributo disabled del mismo, tal y como lo mencioné en una de mis respuestas anteriores.

Por otro lado, la propiedad innerHTML se utiliza para tomar/asignar el contenido de un elemento, por lo que intentar aplicar un evento al contenido, es imposible. Los eventos se aplican sobre los elementos, mas no sobre su contenido u otra propiedad.

Para el tema de la habilitación/deshabilitación del botón al estar marcado/desmarcado el checkbox, tendrías que hacer esto:

Código Javascript:
Ver original
  1. function habil_des(){
  2.     var visib = document.getElementById("visib"),
  3.         inp = document.getElementById("inp");
  4.     visib.disabled = inp.checked ? true : false;
  5. }

Y, por lógica, al estar deshabilitado, los clics no deberían de surtir efecto en el botón. Solo tendrán efecto cuando el botón esté habilitado.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 16/03/2015, 12:36
 
Fecha de Ingreso: febrero-2015
Ubicación: Alemania
Mensajes: 26
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: No funciona reactivacion de funciones

Cita:
Iniciado por Alexis88 Ver Mensaje
Esto:



No tiene sentido. Para habilitar/deshabilitar un elemento del DOM, tienes que asignar o bien el valor true o false al atributo disabled del mismo, tal y como lo mencioné en una de mis respuestas anteriores.

Por otro lado, la propiedad innerHTML se utiliza para tomar/asignar el contenido de un elemento, por lo que intentar aplicar un evento al contenido, es imposible. Los eventos se aplican sobre los elementos, mas no sobre su contenido u otra propiedad.

Para el tema de la habilitación/deshabilitación del botón al estar marcado/desmarcado el checkbox, tendrías que hacer esto:

Código Javascript:
Ver original
  1. function habil_des(){
  2.     var visib = document.getElementById("visib"),
  3.         inp = document.getElementById("inp");
  4.     visib.disabled = inp.checked ? true : false;
  5. }

Y, por lógica, al estar deshabilitado, los clics no deberían de surtir efecto en el botón. Solo tendrán efecto cuando el botón esté habilitado.

Saludos
Muchas gracias. Aun tengo mucho que aprender. Hay conceptos que no manejo del todo bien. Gracias y espero que esto me ayude.

Etiquetas: button, checkbox, html
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 07:39.