Autor | Zpráva | ||
---|---|---|---|
_fantomas Profil |
#1 · Zasláno: 21. 2. 2015, 11:05:24
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 |
#2 · Zasláno: 21. 2. 2015, 11:34:57
To
disabled potřebujete nastavit při odeslání formuláře (onsubmit ).
|
||
_fantomas Profil |
#3 · Zasláno: 21. 2. 2015, 11:54:55
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 |
#5 · Zasláno: 21. 2. 2015, 12:15:59
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 |
#7 · Zasláno: 21. 2. 2015, 12:57:21
Dá sa do disable stavu ale neodošle sa skript v tom je problém
|
||
Keeehi Profil |
#8 · Zasláno: 21. 2. 2015, 13:08:39
_fantomas:
Když odstraníš to return false, tak to bude fungovat. |
||
_fantomas Profil |
#9 · Zasláno: 21. 2. 2015, 13:39:24
Práveže vtedy to neodošle tiež
|
||
Dan Charousek Profil |
#10 · Zasláno: 21. 2. 2015, 13:46:24
_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 |
#11 · Zasláno: 21. 2. 2015, 13:51:15
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 |
#13 · Zasláno: 21. 2. 2015, 14:09:18
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 |
#15 · Zasláno: 21. 2. 2015, 14:15:56
Neviem čo tu riešíme potrebujem ľahky príklad ako button vypnúť po odoslaní skriptu
|
||
Keeehi Profil |
#16 · Zasláno: 21. 2. 2015, 14:18:57
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 |
#17 · Zasláno: 21. 2. 2015, 14:29:04 · Upravil/a: _fantomas
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 |
#18 · Zasláno: 21. 2. 2015, 14:47:43
|
||
Keeehi Profil |
#19 · Zasláno: 21. 2. 2015, 14:48:00
_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 |
#20 · Zasláno: 21. 2. 2015, 15:07:24
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 |
#21 · Zasláno: 21. 2. 2015, 15:11:29
_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 |
#22 · Zasláno: 21. 2. 2015, 15:55:35
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 |
#24 · Zasláno: 21. 2. 2015, 18:51:39
a kde je prosimta chyba v PHP?
|
||
Str4wberry Profil |
#25 · Zasláno: 21. 2. 2015, 19:08:21
Zakázaný
<input> se nepřenáší na server, takže se ta podmínka nemůže nikdy splnit.
|
||
Časová prodleva: 9 let
|
0