¿Alguien sabe como evitar el Doble Submit en un boton?
Quisiera crearlo en un control de usuario *.ASCX
Saludos
| ||||
Re: Evitar Doble Submit (Doble click) sobre un boton ASP.NET Creo que lo más sencillo es deshabilitar el botón mediante Javascript cuando pulsas la primera vez, así evitas pulsarlo dos veces. Fíjate que algo así es lo que hace el formulario para escribir mensajes de FDW. Un saludo.
__________________ ¡¡NO A LA GUERRA!! Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares! |
| |||
Re: Evitar Doble Submit (Doble click) sobre un boton ASP.NET Al doble click me refiero a que un usuario no vaya hacer dobre post. Al momento de llenar un formulario y damos click en enviar, comenzamos a enviar la información, pero si esta tarda es comun que un usuario vuelva a dar click en el boton y por lo tanto es 2ble post yla información llegara duplicada. Eh intentado con la funcion de javascript onclick, pero el boton se dehabilita no impotando si el form se valido o no. Si yo pongo un campo requerido con un control para validarlo "requieredFieldValidator" y este campo lo dejo vacio... al momento de dar el click el boton se desactiva ya no puedes dar el segundo click pero resulta que el control valido que el campo esta vacio asi que no hizo ya nada y tampoco podemos continuar por que el boton ya se bloqueo. Saludos |
| ||||
Re: Evitar Doble Submit (Doble click) sobre un boton ASP.NET Entiendo. El control RequiredFieldValidator genera código Javascript en la página. Deberías ver cuál es el código generado para intentar interactuar con él tras el evento onClick del botón. Si tengo un ratito intento mirarlo a ver si te puedo echar una mano, y ya de paso, me sirve a mí también. Por cierto, hace poco estuve practicando con un control personalizado que contenía un botón que al presionar se deshabilitaba y en su lugar aparecía un imagen animada de progreso o de espera. Puede que te oriente en algo. Ojo, no está muy revisado su funcionamiento.
Código:
Un saludo. Imports System.ComponentModel Imports System.Web.UI Imports System.Web.UI.WebControls Public Class controlBotonProgreso : Inherits Control : Implements INamingContainer Private IDControl As String = "ControlProgreso" Private _Boton As Button Private _TextoEtiqueta As String Private _RutaImg As String Public Event Click(ByVal sender As Object, ByVal e As EventArgs) Protected Sub OnClick(ByVal e As EventArgs) RaiseEvent Click(Me, e) End Sub <Browsable(True), _ Category("Controles secundarios"), _ Description("Botón")> _ Public ReadOnly Property Boton() As Button Get Return CType(Me.FindControl("btn"), Button) End Get End Property <Browsable(True), _ Category("Controles secundarios"), _ Description("Imagen")> _ Public ReadOnly Property Imagen() As Image Get Return CType(Me.FindControl("img"), Image) End Get End Property <Browsable(True), _ Category("Controles secundarios"), _ Description("Ruta de la imagen")> _ Public Property RutaImg() As String Get Return _RutaImg End Get Set(ByVal Value As String) _RutaImg = Value End Set End Property <Browsable(True), _ Category("Controles secundarios"), _ Description("Texto de la etiqueta de progreso")> _ Public Property TextoEtiqueta() As String Get Return _TextoEtiqueta End Get Set(ByVal Value As String) _TextoEtiqueta = Value End Set End Property Protected Overrides Sub CreateChildControls() Dim btn As New Button btn.ID = "btn" AddHandler btn.Click, AddressOf btn_Click Dim img As New Image img.ID = "img" 'img.ImageUrl = RutaImg Dim lbl As New Label lbl.ID = "lbl" lbl.Text = TextoEtiqueta Dim sbScript As New System.Text.StringBuilder sbScript.Append("<script language='javascript'>" & vbCrLf) sbScript.Append("function progreso() {" & vbCrLf) sbScript.Append("document.getElementById('" & Me.ClientID & "_btn').style.display = 'none';" & vbCrLf) sbScript.Append("document.getElementById('" & Me.ClientID & "_img').style.display = '';" & vbCrLf) sbScript.Append("document.getElementById('" & Me.ClientID & "_lbl').style.display = '';" & vbCrLf) sbScript.Append("}" & vbCrLf) sbScript.Append("</script>" & vbCrLf) Me.Controls.Add(New LiteralControl(sbScript.ToString)) Me.Controls.Add(btn) Me.Controls.Add(New LiteralControl(" ")) Me.Controls.Add(img) Me.Controls.Add(New LiteralControl(" ")) Me.Controls.Add(lbl) btn.Style.Add("DISPLAY", "") btn.Attributes.Add("onClick", "progreso()") img.Style.Add("DISPLAY", "none") lbl.Style.Add("DISPLAY", "none") End Sub
__________________ ¡¡NO A LA GUERRA!! Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares! |
| |||
Re: Evitar Doble Submit (Doble click) sobre un boton ASP.NET En una pagina con trucos acerca de .net, explica como hacerlo: (La pagina en cuestion es: http://www.mistrucos.net/trucos-asp-net-2.htm) Para implementarlo, pegar este código en el load de la página: Me.Page.ClientScript.GetPostBackClientHyperlink(Me .btn_Submit, String.Empty) Dim sb As New StringBuilder sb.Append(Me.Page.ClientScript.GetPostBackEventRef erence(Me.btn_Submit, vbNullString)) sb.Append(";") btn.Attributes("onclick") = sb.ToString() Cambiaremos el nombre del botón, según al nombre del botón de nuestro formulario web. Ya nos comentaras si te ha funcionado. Saludos |