Foros del Web » Programando para Internet » Javascript »

Comportamiento extraño deshabilitando botones

Estas en el tema de Comportamiento extraño deshabilitando botones en el foro de Javascript en Foros del Web. Hola amigos, En mi aplicación web he desarrollado un script para que cuando se abra una ventana pop-up , se deshabiliten los botones de la ...
  #1 (permalink)  
Antiguo 15/07/2005, 01:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 49
Antigüedad: 20 años
Puntos: 0
Comportamiento extraño deshabilitando botones

Hola amigos,

En mi aplicación web he desarrollado un script para que cuando se abra una ventana pop-up , se deshabiliten los botones de la página "padre" con el objetivo de que no se puedan abrir más ventanas pop-up. El código sería algo asi:

window.opener.document.getElementById('Btn1').disa bled=true;
window.opener.document.getElementById('Btn2').disa bled=true;

Este código se ejecutaría desde la ventana pop-up, al cargarla, de forma que no se podrían abrir más pop-ups.

El problema es que en ocaciones me funciona y otras no (se pueden pulsar los botones). Algunas pistas...
-Los botones son botones ImageButton de ASP.NET, pero bueno, luego en HTML son "inputs" de toda la vida.
-El código necesita de comprobaciones en el lado del servidor, es decir, hay codigo del tipo:
<% if(Request["oper"]=="1"){ %>
window.opener.document.getElementById('Btn').disab led=true;
<% } %>
donde if(Request["oper"]=="1") es codigo c# que se ejecuta en el servidor.
-Por último, lo curioso es que al "depurarlo" con "alerts", por ejemplo , alert("voy por la instrucción x"); si que me funciona...

Es curioso, es como si a veces se ejecutara el javascript y otras veces no. Cundo le meto los alerts() todo va de maravilla pero si no, hay veces que no se ejecuta el código....

A ver si me podeis echar una manilla con esto..
Por cierto ¿conoceis alguna otra forma de hacer esto? es decir, por ejemplo, limitar el número de pop-ups a 1 o cosas asi.

Bueno, muchas gracias de antemano.
  #2 (permalink)  
Antiguo 15/07/2005, 01:20
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
Si al abrir el pop up le pones siempre el mismo nombre siempre se abrirá sólo uno. Así:

pepe=window.open("pagina.html","pepe","width=100,h eight=200");

Y lo mejor es que pongas el código en la página madre con un onclick. O prueba a poner una function en la madre:
function pepe(){
document.getElementById('Btn').disabled = true;
}

y llamas a la función desde la popup así:
opener.pepe();

Dime a ver como te fue...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 15/07/2005, 02:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 49
Antigüedad: 20 años
Puntos: 0
Gracias amigo KarlanKas. He seguido tus consejos y aunque sigo teniendo el mismo problema (que hay veces que no deshabilita los botones) ahora al menos, sé por qué, ya que ahora si que me aparece un error de javascript en la página padre. La historia es que a veces, me dice que document.getElementById(...) es null o no es un objeto, con lo cual, partiendo de ahi, es lógico que no me pueda deshabilitar el botón. Ahora la historia es saber por qué hay veces que el objeto (botón) existe y otras que no..peor aún, por qué cuando le pongo "alerts" en plan depuración el objeto siempre existe y cuando no se los pongo a veces existe pero otras no.
Gracias de nuevo. Un saludo.
  #4 (permalink)  
Antiguo 15/07/2005, 04:00
 
Fecha de Ingreso: julio-2005
Mensajes: 9
Antigüedad: 19 años, 7 meses
Puntos: 0
Yo tengo el mismo problema con los alerts (escribí ayer al foro - "expediente X: alert()" - pero no he sacado nada en claro). En un caso solo se ejecuta el submit de un formulario si acto seguido se le pone un alert. En otro el problema es mas similar al que contais, al intenar abrir una ventana modal.

Cualquier cosa que saquéis en claro será bienvenida.

Salu2
  #5 (permalink)  
Antiguo 15/07/2005, 04:44
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
Los botones están dentro de un formulario?
Si es así prueba a deshabilitarlos con document['name_del_form'][`name_del_boton'].disabled=true;
o también puedes meter los botones dentro de un div y hacer que el div se haga invisible. Si no lo ves no lo puedes pulsar!

<div id="botonera"><input type="image" src="pepito.jpg" id="btn1" /><input type="image" src="pepito.jpg" id="btn2" /></div>

opener.document.getElementById("botonera").style.v isibility="hidden";

Se soluciona así? Y pasándole el foco?(opener.focus();)

Son ideas que se me ocurren...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 15/07/2005, 04:55
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Seguramente, ahí veces que no te encuentra los botones (es decir objeto no existe) xq la ventana padre esté recargadonse, es decir, haciendo un PostBack y como son controles del servidor todavía no se han cargado.

Te recomiendo que no hagas postback al abrir el popup, o que si lo haces los desabilites desde codigo C#.
  #7 (permalink)  
Antiguo 15/07/2005, 05:13
 
Fecha de Ingreso: febrero-2005
Mensajes: 49
Antigüedad: 20 años
Puntos: 0
Gracias de nuevo por las respuestas. Probaré lo que me has dicho, KarlanKas.
De todas formas creo que los tiros van por donde dice Jose_minglein2. Quizas esa sea la explicación por la que con "alerts" si que funciona.
Respecto a lo de deshabilitar los botones desde c# creo que no se puede, que los ImageButton no traen ningún método o propiedad para deshabilitarlos y hacer postback para abrir el popup es inevitable puesto que se abre desde un método (manejador de evento de botón) de C#...haciendo algo asi:

Response.Write("<script>window.open('popup.htm,'po pup','height=360, width=600,status= no, resizable= no, scrollbars=yes,toolbar=no,location=no,menubar=no') </script>");

Bueno, muchas gracias por las respuestas.
  #8 (permalink)  
Antiguo 15/07/2005, 05:29
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años, 3 meses
Puntos: 8
Si que puedes desde codigo:

ImageButton1.Enabled = False;

No cambia el color ni nada (como en un textbox p.ej) pero el usuario no puede cliquearlo.
  #9 (permalink)  
Antiguo 15/07/2005, 06:27
 
Fecha de Ingreso: febrero-2005
Mensajes: 49
Antigüedad: 20 años
Puntos: 0
Pues si señor, está usted en lo cierto, se puede deshabilitar un ImageButton desde c#, y ya con esta modificación me funciona todo perfectamente (sin alerts() jejeje). Bueno, muchas gracias a todos por el interés y por las respuestas .

Ahora se me ha planteado otra problema relacionada con lo mismo, pero no igual... asi que creo que mejor abro un nuevo hilo.

Un saludo y muchas gracias!
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 22:48.