Autor Zpráva
_fantomas
Profil
Ahoj, mám prihlasovací skript a potrebujem ak niekto stlačí tlačítko prihlásiť
aby sa dalo do disable stavu kedy sa dá stlačiť až po dokončení skriptu alebo obnovení stránky.
Skúšal som niečo ako <input type="submit" name="login" value="Login" onclick="this.disabled = true" />
Ale to nefunguje, tlačítko sa dá do disable stavu ale skript sa neodošle .. Prosím o radu.
Str4wberry
Profil
To disabled potřebujete nastavit při odeslání formuláře (onsubmit).
_fantomas
Profil
On submit ide ale iba do tagu <form onsubmit= ...
Ako tam mám napísať aby sa input vypol a odoslal skript?
lionel messi
Profil
_fantomas:
Ako tam mám napísať aby sa input vypol a odoslal skript?

<form onsubmit="login.disabled = true;">
<input type="submit" name="login" value="Login">
</form>

Možno bude žiaduce doplniť return false.
_fantomas
Profil
nefunguje, ten login v tom onsubmit treba definovať asi inak len neviem ako
lionel messi
Profil
_fantomas:
ten login v tom onsubmit treba definovať asi inak
V tejto diere myš nebude. Input to bez problémov zachytáva.

nefunguje
A teraz?

Živá ukázka
_fantomas
Profil
Dá sa do disable stavu ale neodošle sa skript v tom je problém
Keeehi
Profil
_fantomas:
Když odstraníš to return false, tak to bude fungovat.
_fantomas
Profil
Práveže vtedy to neodošle tiež
Dan Charousek
Profil
_fantomas:
Dávat to do disabled stavu pakliže se formulář odešle klasickou cestu je zbytečné. Po obnovení stránky (případně po přesměrování) bude atribut disabled pryč. Buďto zpracováváš formulář v javascriptu a odesíláš (třeba) ajaxem a v tom případě můžeš disabled nastavit po přijmutí odpovědi ze serveru a nebo to udělej na straně php a to jestli byl formulář odeslán můžeš řešit parametrem v url, sešnou, sušenkou podle toho jak se ti to hodí a hlavně podle toho k čemu to má vůbec sloužit.
_fantomas
Profil
Než sa prihlasím trvá to asi 2 sekundy než sa skript spracuje takže sa stránka načíta a za tie 2 sekundy môžem
stalčit login button koľko chcem a skript sa tak predlží o další čas ... má to tak aj FB, Origin ... a chcem to tak aj ja
Keeehi
Profil
_fantomas:
Práveže vtedy to neodošle tiež
Zkoušeno jen v chromu ale tam toto funguje Živá ukázka

Nejlepší ale bude to tlačítko skrýrt, nebo ho skrýt a na jeho místě zobrazit něco jiného. Nebo rovnou skrýt celý formulář a místo toho tam zobrazit něco jako "probíhá přihlašování ..."
_fantomas
Profil
Ja chcem ale aby ten button disablol nič viac nechcem žiadne miznucé formulare
tu je ten problém že ja pri každom úspešnom lognutí zaznamenávam data do DB
a ked sa niekto úspešne prihlási ale klikal na login 20x tak 20x dostanem záznam že se úspšene prihlásil
Marschmallow
Profil
_fantomas:
Tak si v PHP vytvoř podmínku, že pokud je v DB už přihlášení tedy PRIHLASEN = 1, tak se nemůže znovu přihlásit, ale musí se nejprve odhlásit, pak bude PRIHLASEN = 0.

Ale stejně to jde obejít, co když si vytvořím formulář, který bude externě přes action mířit na Tvůj přihlašovací skript? Proto doporučuji porovnání a ukládání do DB, jestli už je uživatel přihlášený a pokud ano, nezapisovat opětovné přihlášení do DB:
_fantomas
Profil
Neviem čo tu riešíme potrebujem ľahky príklad ako button vypnúť po odoslaní skriptu
Keeehi
Profil
To co je v [#12] mi funguje. Nemůžu ovšem ověřit funkčnost v jiných prohlížečích. Dalo by se tam dodat potlačení defaultního chování a ruční odeslání formuláře jako je stackoverflow.com/questions/5169471/is-there-an-after-submit-jquery-option (jQuery není potřeba)
_fantomas
Profil
No nič asi to nepôjde, celkom som ten príklad nepochopil, budem hladať dalej.


Inač ten disable button je aj tu ked odosielate príspevok
Dan Charousek
Profil
_fantomas:
[#12][#6] fungují.
Keeehi
Profil
_fantomas:
No nič asi to nepôjde, celkom som ten príklad nepochopil, budem hladať dalej.
Tak to bude fakt těžké. Má to tak 5 řádků a 3 důležité funkce. Jestli toto nezvládneš pochopit, tak se s tím můžeš rovnou rozloučit.

Inač ten disable button je aj tu ked odosielate príspevok
Tedy se ale data neodesílají přímo formulářem, ale pomocí ajaxu.
_fantomas
Profil
A jak ro prerobím aby som to mal aj ja na ajax?
momentálne to mam takto

        <form class="loginForm" method="post" action="">
            <table style="margin: auto;">
                <tr>
                    <td>
                        <?php
                        if(isset($_POST['logme']))
                        {
                        $username = $_POST['username'];
                        $password = $_POST['password'];
                        $login = new login($username, $password, 'index.php', 'admin');
                        $login->loginUser();
                        unset($login);
                        }
                        ?>
                    </td>
                </tr>
                <tr>
                    <td><label for="username">Meno alebo email </label></td>
                    <td><input type="text" name="username" id="username" /></td>
                </tr>
                <tr>
                    <td><label for="password">Heslo </label></td>
                    <td><input type="password" name="password" id="password" /></td>
                </tr>
                <tr>
                    <td><input type="submit" id="logme" name="logme" value="Login" /></td>
                </tr>
            </table>
        </form>
lionel messi
Profil
_fantomas:
A jak ro prerobím aby som to mal aj ja na ajax?
Nebolo by lepšie si najprv niečo o problematike pohľadať, naštudovať a až potom sa pýtať na konkrétny problém? Zatiaľ zrejme poznáš len tento Ajax. :-)
_fantomas
Profil
No niečo som pokutil

    <script type="text/javascript">
        function logger() {

            var fusername = document.getElementById("fusername").value;
            var fpassword = document.getElementById("fpassword").value;

            $.ajax({
                url: "test.php",
                type: "POST",
                data: "username="+fusername+"&password="+fpassword,
                success: function(html) {
                    alert(html);
                }
            })
        }
    </script>

a v test.php mám

require_once '../class/login.php';

$username = $_POST['username'];
$password = $_POST['password'];

//$login = new login($username, $password, 'index.php', 'admin');
//$login->loginUser();

echo $username;

meno mi pekne vypíše ale ked odstrním tie pozmámky tak ma už prihlásiť nechce, skript nerobi absolutne nič, čím to môže byt?
Chamurappi
Profil
Reaguji na _fantomase:
A jak ro prerobím aby som to mal aj ja na ajax?
Proč to chceš? To ti přeci nic neřeší. Akorát tím rozbiješ našeptávání (= prohlížeč si neuloží odesílané hodnoty, pokud standardní odeslání zrušíš), čímž to pro uživatele zhoršíš.

if(isset($_POST['logme']))
Aha, ty testuješ odeslání podle toho, jestli přijde hodnota odesílacího tlačítka? Tak to je přeci jasné, že když ho těsně před odesláním skriptem zakážeš, že ti jeho hodnota nepřijde. Neznamená to, že se ti formulář neodesílá, ani že se neodeslalo jméno a heslo. V tom je celá věda. Triviální skript ve [#4] funguje bezchybně, chybu máš v PHP…


Reaguji na Keeehiho:
Tedy se ale data neodesílají přímo formulářem, ale pomocí ajaxu.
AJAX s tím moc nesouvisí. Tlačítko bychom zakazovat nemuseli… ale momentálně je to pro uživatele jediné potvrzení toho, že se něco děje.
_fantomas
Profil
a kde je prosimta chyba v PHP?
Str4wberry
Profil
Zakázaný <input> se nepřenáší na server, takže se ta podmínka nemůže nikdy splnit.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: