Tengo un botón ASP.NET que necesito deshabilitar después de que el usuario hace clic para evitar hacer doble clic. Una vez que se completa el envío, debe habilitarse de nuevo. Puede alguien ayudarme con esto?Deshabilitar el botón asp.net después de hacer clic para evitar hacer doble clic
Respuesta
Puede hacerlo con javascript. en su etiqueta form
, onsubmit="javascript:this.getElementById("submitButton").disabled='true';"
Desactive el botón en el evento OnClick y vuelva a habilitarlo en el controlador de eventos de devolución de llamada AJAX. Así es como lo hago con jQuery.
<script>
$(document).ready(function() {
$('#buttonId').click(function() {
$(this).attr('disabled', 'disabled');
callAjax();
});
});
function callAjax()
{
$.ajax({
url: 'ajax/test.html',
success: function(data) {
//enable button
$('#buttonId').removeAttr('disabled');
}
});
}
</script>
Se puede utilizar el lado del cliente onclick caso de hacerlo:
yourButton.Attributes.Add("onclick", "this.disabled=true;");
he encontrado this, y funciona:
btnSave.Attributes.Add(
"onclick",
"this.disabled = true;" + ClientScript.GetPostBackEventReference(btnSave, null) + ";");
¿Qué es clientScript? –
ninguna de las soluciones anteriores funciona para yo y finalmente encontré la manera más fácil de hacerlo.
button1.enabled = false
cuando necesita activar simplemente hágalo.
button1.enabled = true
¿Cómo evita esto hacer doble clic? Solo se deshabilitará una vez que la solicitud haya finalizado, durante la cual se podría hacer clic en un grupo. – guanome
usando jQuery:
$('form').submit(function(){
$(':submit', this).click(function() {
return false;
});
});
Comprobar este enlace, la forma más sencilla y no se deshabilita las validaciones.
http://aspsnippets.com/Articles/Disable-Button-before-Page-PostBack-in-ASP.Net.aspx
Si usted tiene, por ejemplo,
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Clicked" />
</form>
continuación, puede utilizar
<script type = "text/javascript">
function DisableButton() {
document.getElementById("<%=Button1.ClientID %>").disabled = true;
}
window.onbeforeunload = DisableButton;
</script>
Para desactivar el botón si y después de la validación ha tenido éxito, al igual que la página está haciendo una devolución de datos del servidor.
Las respuestas de enlace único no son bienvenidas en Stack Overflow. – hims056
Esto funciona con un botón html regular.
<input id="Button1"
onclick="this.disabled='true';" type="button"
value="Submit" name="Button1"
runat="server" onserverclick="Button1_Click">
El botón está deshabilitado hasta que se complete la devolución de datos, evitando hacer doble clic.
Aquí hay una solución que funciona para el objeto del botón asp.net. En la parte delantera, agregar estos atributos a su asp: Button definición:
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
En la parte final, en el evento Click llamado método de control, agregar este código al final (preferiblemente en un bloque finally)
myButton.Enabled = true;
no funciona :( –
Me gusta desactivar el botón y llamar a una devolución de datos, de esta manera el código detrás aún se ejecuta después de que el botón esté deshabilitado.
Éste es cómo adjunto de código detrás:
btnProcess.Attributes.Add("onclick", " this.disabled = true; __doPostBack('btnProcess', ''); return false;")
que volver a activar el botón de código subyacente:
btnProcess.Enabled = True
probar esto, que trabajó para mí
<asp:Button ID="button" runat="server" CssClass="normalButton"
Text="Button" OnClick="Button_Click" ClientIDMode="Static"
OnClientClick="this.disabled = true; setTimeout('enableButton()', 1500);"
UseSubmitBehavior="False"/>
Luego
<script type="text/javascript">
function enableButton() {
document.getElementById('button').disabled = false;
}
</script>
Se puede ajustar el tiempo de retardo en "setTimeout"
<script type = "text/javascript">
function DisableButtons() {
var inputs = document.getElementsByTagName("INPUT");
for (var i in inputs) {
if (inputs[i].type == "button" || inputs[i].type == "submit") {
inputs[i].disabled = true;
}
}
}
window.onbeforeunload = DisableButtons;
</script>
<asp:Button ID="btnSend" runat="server" Text="Submit" OnClick="Button_Click"/>
<script type = "text/javascript">
function DisableButton()
{
document.getElementById("<%=btnSend.ClientID %>").disabled = true;
}
window.onbeforeunload = DisableButton;
</script>
Si desea evitar un doble clic, debido a un código del lado del servidor en respuesta lenta a continuación, esto funciona bien:
<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
Intenta poner un Threading.Thread.Sleep (5000) en el _Click() evento en el servidor y verá que el botón está deshabilitado por el tiempo que el servidor está procesando el evento de clic.
¡No es necesario que el código del lado del servidor vuelva a habilitar el botón tampoco!
Funcionó perfectamente para lo que necesitaba lograr. También puede agregar 'this.style.backgroundcolor = '#abcdef';' para cambiar los aspectos de estilo del elemento. –
Esto funciona perfectamente. Solo quiero enfatice la necesidad de 'UseSubmitBehavior =" false "', sin eso, el clic de su botón no se activará en código subyacente. –
Si a alguien le importa, he encontrado esta publicación inicialmente, pero utilizo la compilación de ASP.NET en Validación en la página. Las soluciones funcionan, pero deshabilite el botón aunque haya sido validado. Puede usar este código siguiente para hacerlo de modo que solo deshabilite el botón si pasa la validación de página.
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" OnClientClick=" if (Page_ClientValidate()) { this.value='Submitting..'; this.disabled=true; }" UseSubmitBehavior="false" />
Esta solución funciona si está utilizando los validadores ASP.NET:
<script language="javascript" type="text/javascript">
function disableButton(sender,group)
{
Page_ClientValidate(group);
if (Page_IsValid)
{
sender.disabled = "disabled";
__doPostBack(sender.name, '');
}
}</script>
y cambiar el botón:
<asp:Button runat="server" ID="btnSendMessage" Text="Send" OnClick="btnSendMessage_OnClick" OnClientClick="disableButton(this,'theValidationGroup')" CausesValidation="true" ValidationGroup="theValidationGroup" />
- 1. ¿Cómo hacer que el botón no se pueda hacer clic después de hacer clic en él?
- 2. Impedir selección de texto después de hacer doble clic
- 3. Deshabilitar botón al hacer clic, pero habilitar otro botón
- 4. Jeditable - resaltar todo el texto después de hacer doble clic
- 5. ¿Cómo hacer doble clic y evento de un solo clic para el botón de enlace del control de Asp.net?
- 6. Distinga entre hacer doble clic con el mouse y hacer clic con el mouse en wpf
- 7. Salir/deshabilitar el modo de edición después de hacer doble clic en evento manejado
- 8. Evite hacer doble clic en un botón con knockout.js
- 9. botón para hacer clic dos veces en asp.net (después de texto AutoPostBack)
- 10. ¿Por qué mi formulario no se publica cuando desactivo el botón de enviar para evitar hacer doble clic?
- 11. gridview edit requiere hacer doble clic
- 12. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 13. ASP.Net haga doble clic en el problema
- 14. Cómo deshabilitar el botón, haga clic en?
- 15. Cómo evitar que el texto seleccione un lienzo de HTML5 externo al hacer doble clic en?
- 16. JQuery JEditable - Cómo deshabilitar al hacer clic en edición
- 17. Implementar doble clic para botón en Android
- 18. ¿Cómo escuchar para hacer doble clic en jstree?
- 19. ¿Cómo evitar un doble clic usando jQuery?
- 20. jQuery .load() Cómo evitar la doble carga al hacer doble clic en
- 21. VBA Botón de Excel cambia el tamaño después de hacer clic en él (botón de comando)
- 22. Actualizando etiqueta ASP.NET después de clic de botón, utilizando UpdatePanel
- 23. Hacer doble clic en un evento en el elemento JList
- 24. Desactivar el 'requisito' para hacer doble clic en una ventana desenfocada al hacer clic en un menustrip
- 25. Cómo evitar que se active el evento de un solo clic al hacer doble clic en extjs
- 26. Cómo deshabilitar un botón después del primer clic
- 27. jQuery: Al hacer clic, evitar el evento de mouseenter
- 28. Ir a diferentes URL al hacer clic en el botón
- 29. jQuery hacer clic/cambiar función en el botón de opción
- 30. jquery fancybox - evitar cerrar al hacer clic fuera de fancybox
Es muy sencillo button.enable = false después de la finalización de código deseada – Dotnet
¿Es esto una devolución de datos normal o AJAX? –
Consulte mi respuesta para otra pregunta si no desea corregir esto botón a botón: http://stackoverflow.com/a/28844217/787757 – sparebytes