Domanda

Sto cercando uno script per impedire all'utente di colpire il pulsante di invio due volte appositamente per lungo tempo le forme di elaborazione in background. Mi piacerebbe implementare qualcosa non solo funzionale, ma visivamente accattivante anche. Qualcuno può condividere alcuni suggerimenti su come ottenere questo risultato utilizzando, ad esempio, Scriptaculous?

Grazie

È stato utile?

Soluzione

Non è Scriptaculous, ma ho sempre fatto in questo modo:

HTML:

<form onsubmit="return checkDoubleSubmit(this) && yourSubmitroutine();">
  <input ...>
   ...
  <input type="hidden" value="0" id="dscheck">
</form

Javascript:

function checkDoubleSubmit(form) {
    var v = 0;
    var e = form.getElementById("dscheck");
    if (e != null) {
        v = e.value;
        v = v * 1;  // Coerce to number
        e.value = "1";
    }
    return v == 0;
}

Altri suggerimenti

Usando prototipo si può provare qualcosa di simile:

var DoubleSubmit = {
prevent: function(){
    var forms = document.body.select('form');
    forms.invoke('observe', 'submit', DoubleSubmit.observeSubmit);
},
observeSubmit: function(event){
    var submitButtton = event.element().select('input[type="submit"]')[0];
    submitButtton.disable();
    return true;
}};document.observe('dom:loaded',DoubleSubmit.prevent);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top