Domanda

Mi piacerebbe disabilitare un modulo dalla sua presentazione al fine di evitare doppie osservazioni. Abbastanza uso standard caso mi potrebbe pensare, ma tutti gli esempi riesco a trovare là fuori sono errate.

Tutto ciò che posso trovare è basata su come disattivare il pulsante di invio, ma ciò non impedisce la forma di essere ri-presentata se l'utente preme il tasto Invio sulla forma, che è un approccio piuttosto comune.

sto pensando su come modificare uno degli script esistenti là fuori per tenere conto di questo, ma prima di reinventare la ruota, qualcuno sa di uno script che già gestisce correttamente questo che sono in grado di condividere? Sono davvero sorpreso non sembra essere nulla là fuori ancora.

È stato utile?

Soluzione

Si potrebbe creare una variabile booleana (o un oggetto con una variabile membro booleana) e inviare solo la forma in cui la variabile è falsa. Qualcosa di simile:

function init() {
    var submit = false;
    var f = document.getElementById("FormID");
    f.onsubmit = function() {
        if(submit) {
            return false;
        } else {
            submit = true;
            return true;
        }
    }
}

Naturalmente, si dovrebbe chiamare init seguendo il caricamento della pagina, in qualunque sapore si sceglie di farlo (window.onload = ..., window.addEventListener(...), window.attachEvent(...), ecc.).

Altri suggerimenti

http://jsfiddle.net/c2N4v/

var sent = false;
$('#form').submit(function(e) {
    if (!sent) {
        sent = true;
        // do whatever
    }
    else e.preventDefault();
});

Ho provato un sacco di soluzioni, ma nessuno di loro ha lavorato per me. Ho usato questo e si sta lavorando davvero bene:

jQuery

<script>
$(document).ready(function(){
  $('#buttonSubmit').click(function() {
    if ($('#frm-confirm').attr('submitted')){
        event.preventDefault();
    } else {
        $('#frm-confirm').attr('submitted',true);
    }
  });
});
</script>

HTML / PHP

<form id="frm-confirm" action="" method="post">
    <input id="amount" name="amount" value="<?php echo round($_POST['amount'],2); ?>" type="hidden" />
    <input id="order_id" name="order_id" value="<?php echo htmlspecialchars($_POST['order_id']);?>" type="hidden" />
    <input type="submit" id="buttonSubmit" name="confirm" value="Confirm" />
</form>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top