Foros del Web » Programando para Internet » ASPX (.net) »

Evitar Doble Submit (Doble click) sobre un boton ASP.NET

Estas en el tema de Evitar Doble Submit (Doble click) sobre un boton ASP.NET en el foro de ASPX (.net) en Foros del Web. ¿Alguien sabe como evitar el Doble Submit en un boton? Quisiera crearlo en un control de usuario *.ASCX Saludos...
  #1 (permalink)  
Antiguo 06/08/2007, 20:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 155
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Evitar Doble Submit (Doble click) sobre un boton ASP.NET

¿Alguien sabe como evitar el Doble Submit en un boton?
Quisiera crearlo en un control de usuario *.ASCX
Saludos
  #2 (permalink)  
Antiguo 06/08/2007, 22:37
Avatar de Yaraher  
Fecha de Ingreso: abril-2007
Ubicación: Lima, Perú
Mensajes: 262
Antigüedad: 17 años
Puntos: 9
Re: Evitar Doble Submit (Doble click) sobre un boton ASP.NET

Es una pregunta interesante. No recuerdo si existe el evento de DoubleClick. En todo caso, en tu método Click puedes hacer una verificación si el estado de la Página no está ocupada y según eso proceder o no con el código del Click.
  #3 (permalink)  
Antiguo 07/08/2007, 00:29
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
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!
  #4 (permalink)  
Antiguo 07/08/2007, 08:34
 
Fecha de Ingreso: febrero-2006
Mensajes: 155
Antigüedad: 18 años, 3 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 08/08/2007, 01:34
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
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:
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("&nbsp;"))
        Me.Controls.Add(img)
        Me.Controls.Add(New LiteralControl("&nbsp;"))
        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
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!
  #6 (permalink)  
Antiguo 08/08/2007, 11:42
 
Fecha de Ingreso: febrero-2004
Mensajes: 27
Antigüedad: 20 años, 2 meses
Puntos: 0
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
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 17:44.