¿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 |