[Asp.net] Qual è l'approccio migliore per la disabilitazione (lato client) di un pulsante di invio?


Answers

Potresti fare qualcosa del genere:

$('form').submit(function() {
    $(this)
        .find(":submit,:image")             // get all the submit buttons
        .attr({ disabled : 'disabled' })    // disable them
        .end()                              // go back to this form
        .submit(function() {                // change the onsubmit to always reject.
            return false;
        })
    ;
});

Benefici di questo:

  • Funzionerà con tutte le tue forme, con tutti i metodi di invio:
    • facendo clic su un elemento di invio
    • premendo invio, o
    • chiamando form.submit() da qualche altro codice
  • Disabilita tutti gli elementi di invio:
    • <input type="submit"/>
    • <button type="submit"></button>
    • <input type="image" />
  • è veramente breve
Question

Dettagli:

  • Disabilita solo dopo che l'utente fa clic sul pulsante di invio, ma prima della pubblicazione sul server
  • ASP.NET Webforms (.NET 1.1)
  • Preferisci jQuery (se esiste una qualsiasi libreria)
  • Deve essere abilitato se il modulo si ricarica (ad es. Carta di credito fallita)

Questa non è una necessità che io faccia questo, ma se c'è un modo semplice per farlo senza dover cambiare troppo, lo farò. (cioè se non c'è una soluzione semplice, probabilmente non lo farò, quindi non preoccuparti di scavare troppo in profondità)




in JQuery:

$('#SubmitButtonID').click(function() { this.disabled = true; });



Esistono tre modi per inviare un modulo che dovrebbe essere coperto. Usa entrambi i suggerimenti di David McLaughlin e Jimmy. Uno disabiliterà l'elemento di modulo pulsante di invio mentre l'altro disabilita l'invio di modulo HTML di base.

Per il terzo, questi non disabiliteranno Javascript dal fare un form.submit (). Il OnSubmit="return false" si applica solo quando un utente fa clic sul pulsante di invio o preme Invio in un elemento del modulo di input. Anche lo scripting lato client dovrà essere gestito.