Pergunta

Estou procurando um script para impedir que o usuário atinja o botão Enviar duas vezes, especialmente para os formulários de processamento de fundo de longa data. Eu gostaria de implementar algo não apenas funcional, mas também visualmente atraente. Alguém pode compartilhar algumas dicas de como fazer isso usando, por exemplo, scriptaculous?

Obrigado

Foi útil?

Solução

Não é scriptaculoso, mas eu sempre fiz assim:

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;
}

Outras dicas

Usando o protótipo, você pode tentar algo assim:

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top