Frage

Ich möchte ein Formular deaktivieren, nachdem es um vorgelegt Doppel vorzubeugen. Ziemlich Standard Anwendungsfall würde ich denken, aber alle Beispiele kann ich herausfinden, dort sind fehlerhaft.

Alles, was ich kann, basiert finden auf den Absenden-Button deaktivieren, aber das verhindert nicht die Form von Wieder vorgelegt werden, wenn der Benutzer die Taste auf dem Formular eingeben trifft, die ein ziemlich gemeinsames Konzept ist.

Ich denke darüber nach für diese Rechnung eine der vorhandenen Skripte da draußen ändern, aber bevor ich das Rad neu erfinden, Kennt jemand ein Skript, dass dies bereits behandelt richtig, dass sie Aktien sind in der Lage? Ich bin wirklich überrascht es nicht noch etwas da draußen zu sein scheint.

War es hilfreich?

Lösung

Sie könnten eine boolean Variable (oder ein Objekt mit einem boolean Membervariable) erstellen und nur das Formular aus, wenn die Variable falsch sind. So etwas wie:

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

Natürlich würden Sie haben init nach dem Laden der Seite zu nennen, in welcher auch immer Geschmack Sie wählten, das zu tun (window.onload = ..., window.addEventListener(...), window.attachEvent(...) usw.).

Andere Tipps

http://jsfiddle.net/c2N4v/

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

Ich habe viele Lösungen ausprobiert, aber keiner von ihnen für mich gearbeitet. Ich habe diese ein und es funktioniert wirklich gut:

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top