inhabilitar boton

22/04/2010 - 18:21 por Jaime Andres | Informe spam
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias
 

Leer las respuestas

#1 Jose A. Fernandez
24/04/2010 - 13:08 | Informe spam
Hola Jaime

Justamente tenia un articulo en mi blog "en borrador" sobre este
tema... asi que copio primeramente algun codigo y preparo el post para
publicarlo y te aviso por aqui
(Ahora tengo uns justificacion para publicarlo que es tratar de
ayudarte)

TEMA 2: Tendrias que ver opciones de Multiple fileUpload (con Flash es
muy buena) entonces puedes seleccionar varios archivos u no solo uno

..Aqui va una parte...



Opción 1: Insertando comportamiento del lado del cliente en el mismo
botón
Opción 1.1: Insertando en la propiedad OnClientScript
Ejemplo
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"

OnClientClick="this.disabled=true;this.value='Enviando...';__doPostBack(this.name,'');"
onclick="btnEnviar11_Click" />

Podríamos obviar la ultima función __doPostBack(this.name,'');
que es la que realiza el postback si utilizamos el método
UseSubmitBehavior en false;
Esta propiedad UseSubmitBehavior “Obtiene o establece un valor que
indica si el control Button utiliza el mecanismo de envío del
explorador del cliente o el mecanismo de devolución de datos de
ASP.NET.” Es true si el control utiliza el mecanismo de envío del
explorador del cliente; de lo contrario, es false. El valor
predeterminado es true.

<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"

OnClientClick="this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


Opción 1.2: Insertando comportamiento desde codebehind
Aquí a lo hacemos por codigo agregando comportamiento en el cliente
con la colección de Attributes
idem al comportamiento anterior pero lo hacemos por código y
ayudándonos con el método GetPostBackEventReference
btnEnviar12.Attributes.Add("onclick",
"this.disabled=true;this.value='Enviando...';" +
Page.GetPostBackEventReference(btnEnviar12));Podríamos obviar la
utilización del método GetPostBackEventReference, si el boton
utilizamos la propiedad UseSubmitBehavior en false (idem la opción
1.1)

NOTA IMPORTANTE: Validación del formulario
Hay un pequeño gran problema al agregar este comportamiento al botón,
cuando tenemos validación, no la toma en cuenta. No la dispara.
Hay que agregar a la funcionalidad/comportamiento que estamos
insertando para disparar la validación y verificarla
if (typeof(Page_ClientValidate) == 'function' &&
Page_ClientValidate() == false) { return false; }
En el ejemplo queda así para el botón 1.3
<asp:Button ID="btnEnviar11" runat="server"
Text="Enviar"
OnClientClick="if (typeof(Page_ClientValidate) ='function' && Page_ClientValidate() == false) { return
false; };this.disabled=true;this.value='Enviando...';"
UseSubmitBehavior="false"
onclick="btnEnviar11_Click" />


TIP: Validar un grupo (ValidationGroup)?
Hay que llamar a la función Page_ClientValidate(‘NombreDelGrupo’)






OPCION 2: Utilizando jQuery. Agregando el comportamiento al
formulario

La idea idea ess suscribirse al evento Submit del boton para detectar
que ya se eesta enviando el formularo
Esto lo dejo para el articulo porque tengo varias opciones
Aqui al suscribirse al evento del formulario no es necesario validar
la pagina


EN EL POST TENGO UNA DEMO... asi que si no es hoy MAñANA LO PUBLICO


Espero que te sirva de ayuda o guia
Saludos

______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja







On 22 abr, 13:21, Jaime Andres
wrote:
Hola que tal,
estoy trabajando en una aplicacion web (en c#) y no se como se puede hacer
para inhabilitar un boton inmediatamente este sea precionado pero que
continue realizando los demas procesos del boton, algo asi como lo que se
hace en las paginas de Microsoft o Facebook (incluso en este sitio la pagina
donde se hacen las preguntas al presionar el boton "Post" se inhabilita
mientras publica la pregunta), de tal manera que no puedan
volver a precionarlo mientras termina de ejecutarse el resto del codigo

otra pregunta, se puede hacer en web permitirle al usuario seleccionar una
carpeta es vez de un archivo?

Muchas gracias

Preguntas similares