Εμποδίζοντας το διπλό submit (quick and dirty)

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από skeftomilos » 26 Σεπ 2007 20:24

Ένας γρήγορος τρόπος να αποφύγουμε το διπλό submit μίας φόρμας είναι να βάλουμε στο onclick του submit button τον εξής κώδικα:

Κώδικας: Επιλογή όλων

<input type="submit" onclick="return !this.done&&&#40;this.done=true&#41;">
Με αυτό τον τρόπο δεν ανησυχούμε αν ο χρήστης κάνει πολλαπλά κλικ στο κουμπί, γιατί όλα τα κλικ εκτός από το πρώτο είναι τζούφια.

Ο κώδικας έχει δοκιμαστεί στον IE6 και στον Firefox 1.5.

Σχετικά θέματα:
- Πως να αποφύγετε διπλοεγγραφές (PHP)
- Bug: Διπλό submit στον IE (JavaScript)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από dimsis » 26 Σεπ 2007 20:41

Πολύ καλό tip skeftomilos... είχα δει κώδικα αρκετών γραμμών για την ίδια δουλειά. Sweet..

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από dik_ » 26 Σεπ 2007 21:08

Πολύ καλό... μέχρι τώρα έκανα disable το button, αλλά αυτό μου φαίνεται καλύτερο :D

bxd
Δημοσιεύσεις: 34
Εγγραφή: 10 Αύγ 2007 18:59

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από bxd » 01 Οκτ 2007 04:27

Ψαρωτικός τρόπος...

Μήπως είναι ruby-ικός; :D

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από skeftomilos » 01 Οκτ 2007 21:38

Μπα, εντελώς JavaScriptικός!

Εντωμεταξύ διαπίστωσα ότι δεν είναι τόσο ρόδινα τα πράγματα, γιατί με Firefox δε μπορεί κανείς να πατήσει back και να ξανακάνει submit τη φόρμα σε περίπτωση π.χ. που πέσει για λίγο το δίκτυο και ξαναεπανέλθει. Το πρόβλημα είναι ότι ο Firefox κασάρει το DOM tree, κάτι που γενικά είναι χρήσιμο βέβαια. Για να εμποδιστεί το κασάρισμα ο απλούστερος τρόπος είναι να παγιδεύσουμε το window.onunload:

Κώδικας: Επιλογή όλων

window.onunload = function&#40;&#41;&#123;&#125;
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από cherouvim » 01 Οκτ 2007 22:57

Προτιμώ να θέτω ένα timeout στο canceλιασμα του button, γιατί αν κάνω click και escape, το κουμπί μετα δεν δουλεύει ποτέ.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Εμποδίζοντας το διπλό submit (quick and dirty)

Δημοσίευση από skeftomilos » 01 Οκτ 2007 23:14

Σωστό κι αυτό!

Ή μπορεί να βγαίνει confirmation message τη δεύτερη φορά:

Κώδικας: Επιλογή όλων

<input type="submit" onclick="return&#40;!this.done||confirm&#40;'Resubmit?'&#41;&#41;&&&#40;this.done=true&#41;">
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες