Űrlap küldés linkre kattintva

Címkék
Űrlap küldés linkre kattintva
2022-11-19T13:25:18+01:00
2022-11-21T01:53:26+01:00
2022-11-21T02:10:33+01:00
L@cus
Sziasztok!

Az alábbi kóddal próbálkoztam, de nem sok sikerrel.
A linkre kattintva nem küldi el az adatokat, ha az inputtal küldöm akkor kifogástalanul működik.

<?php if(isset($_POST["login"])) { echo $_POST['username']; } ?> <!DOCTYPE html> <html lang="hu"> <head> <title>submit</title> </head> <body> <?php if(isset($_GET["action"]) == "login") { ?> <form name="form" method="post" id="be"> <input type="hidden" name="login"> <h2>Felhasználónév</h2> <input type="text" name="username" required> <h2>Jelszó</h2> <input name="password" type="password" required> <p></p> <a href="" onclick="myFunction()" >mehet</a> <!-- <input type="submit" name="login" id="gomb" value="Belépés"> --> </form> <?php } else { ?> <a href="index.php?action=login">log</a> <?php } ?> <script> function myFunction() { document.getElementById("be").submit(); } </script> </body> </html>
Mi az amit nem jól csinálok?
Mutasd a teljes hozzászólást!
Próbáld meg a

<a href="" onclick="myFunction()" >mehet</a>

helyett ezt:

<label onclick="myFunction()">mehet</label>
Mutasd a teljes hozzászólást!

  • Ez a megoldás is megfelelő jelenleg.
    Jól működik.
    Csak egy magyaralázatra lenne szükségem, hogy a normál linkkel miért nem megy?
    Mutasd a teljes hozzászólást!
  • A magyarázat röviden: az anchor arra való, hogy a href attributumban megadott tartalomra navigáljon. Ennyi csak az oka.

    Ha kattintható elemet szeretnél elhelyezni az oldalon, akkor alapvetően button-t kell használni. A robotok, a képernyőolvasók, de maguk a böngészők is úgy lettek elkészítve hogy az anchor a navigációt a button a kattintható dolgokat vezérli.

    Ha bővebben érdekel, akkor nézd meg ezt. Az onclick events résznél írják a Tiédhez hasonló hiba lehetőségét, de ahhoz hogy jobban megértsd, el kell olvasnod az egész oldalt:
    <a>

    Ez is segíthet megérteni, hogy mire jó és mire használható (és mire nem javasolt) az anchor:
    A Complete Guide to Links and Buttons

    Ha azt szeretnéd, hogy a kattintható elem (button) úgy nézzen ki, mint a többi anchor link, akkor az a helyes megoldás, hogy css-el megformázod, hogy pont úgy nézzen ki ahogy az oldalon lévő egyéb linkek.

    A formok esetén az input type="submit" is egy valid megoldás. Ezt is formázhatod úgy, hogy szövegszerűenk tűnjön.

    Én azt javasoltam, hogy label-t használj, mert nem akartam túlbonyolítani a választ azzal, hogy css-t is készítek hozzá. A label is egy kattintható elem. Ez alapvetően a beviteli mezők támogatására való, úgyhogy egy formon alkalmazni talán nem olyan nagy istenkáromlás. Viszont nem rendelkezik href tulajdonsággal és az ezzel járó működésbeli kötöttséggel. A default megjelenése pedig nem "gombszerű" hanem "szövegszerű", úgyhogy ezzel érheted el a leghamarabb azt, amiért gondolom a kérdést feltetted: nem egy gombbal, hanem egy szövegre kattintással szeretnéd elküldeni az űrlapot.

    Ha az anchor és a label helyett a már meglévő input type="submit" gombot helyreállítod, akkor próbálkozz ezzel a css-el. Ez talán a legjobb válasz, ha nem érted az anchor lényegét, és nem szeretnél labelt vagy buttont használni a megoldáshoz.

    #gomb { background: none; border: none; padding: 0; }
    Mutasd a teljes hozzászólást!
  • Hali!

    A magyarázat röviden: az anchor arra való, hogy a href attributumban megadott tartalomra navigáljon. Ennyi csak az oka.

    Nem teljesen megfelelő ez a magyarázat. Az anchor tag csak akkor navigál a „megadott tartalomra”, ha van href attribútum (még ha üres is – ekkor „önmaga” a tartalom).

    A probléma itt az lehet, hogy a posztolás ugyan megtörténik, viszont egyből el is navigál a href által megadott útvonalra a böngésző (üres tartalom esetén lásd korábban). A megoldás szimplán annyi, hogy nem kell href attribútumot megadni (ekkor viszont gondoskodni kell CSS-sel a megfelelő megjelenítésről, mivel ilyen esetben – legalábbis, ami a megjelenést illeti – nem linkként viselkedik). Másik lehetőség, ha a kattintás esemény-kezelőben hamisat adunk vissza (amit az onclick tulajdonságban is megadunk) – ha már így adja meg az eseményeket. Pl.:
    <a href="" onclick="return myFunction()">mehet</a> <script> function myFunction() { document.getElementById("be").submit(); return false; } </script>
    Mutasd a teljes hozzászólást!
  • Szia!

    Hát én továbbra is tartom, hogy az anchor igenis arra való, hogy a href attributumban megadott tartalomra navigáljon. A href nélküli anchor is jelentéssel bír: ez egy olyan hivatkozás, ami jelenleg nem elérhető. De attól ez még egy hivatkozás és nem egy submit button. A kódot értelmező programok hivatkozást látnak benne.

    Az elemek többsége kezeli a kattintás eseményt, úgyhogy technikailag bármit használhatnánk. Miért jó egy olyan elemet alkalmazni, ahol annak az alapértelmezett működését külön kis trükkökkel ki kell iktatni, hogy használható legyen? Ha elveszed tőle a href-et és felülírod az onclick működését, akkor gyakorlatilag csinálsz belőle egy spant. Akkor mi marad ami indokolná az anchor használatát? Számomra tisztábbnak tűnik a kód egy buttonnal az anchor helyett, mert az anchor egyszerűen nem erre való. De ez már elvi kérdés azt hiszem...
    Mutasd a teljes hozzászólást!
  • Hali!

    Hát én továbbra is tartom, hogy az anchor igenis arra való, hogy a href attributumban megadott tartalomra navigáljon.

    OK, értem, te továbbra is tartod. És? Ki mondott ennek ellent?

    A href nélküli anchor is jelentéssel bír: ez egy olyan hivatkozás, ami jelenleg nem elérhető.

    Nem, a href nélküli anchor egy helykitöltő. Nem hivatkozás. És ez válasz a „kódot értelmező programok hivatkozást látnak benne” mondatodra is.

    Miért jó egy olyan elemet alkalmazni, ahol annak az alapértelmezett működését külön kis trükkökkel ki kell iktatni, hogy használható legyen?

    Mi az a külön trükk, amit alkalmazni kellett? Mert mind a href attribútum elhagyása, mind az onclick-ben megadott függvény visszatérési értékének figyelembevétele/továbbadása teljesen szabványos lehetőség. Mennyivel jobb és/vagy kevésbé „trükkös” egy önmagában álló (értsd: bármilyen űrlap-elem nélküli) label-nek onlick-et adni, mint ez?

    Ha elveszed tőle a href-et és felülírod az onclick működését…

    Olvasd csak át ismét a hozzászólásomat: nem ÉS kapcsolat van a két általam megadott lehetőség között, hanem VAGY. Amúgy, mit értesz azon, hogy felülírom az onclick működését? Hogy'/mivel írom felül? Azzal, hogy használok egy – szintén szabványos – lehetőséget?

    Akkor mi marad ami indokolná az anchor használatát?

    Semmi, de nem is ez volt a lényeg, a hozzászólásod egy részére reagáltam (pontosítva azt), illetőleg próbáltam elmagyarázni, hogy mégis miért történik meg a posztolás, és miért nem lát ebből semmit a kérdező (már kliens oldalon).

    Számomra tisztábbnak tűnik a kód egy buttonnal az anchor helyett, mert az anchor egyszerűen nem erre való.

    Egyértelműen én is button-ra teszem a voksom – azonban érdekes, hogy mégis „üres” label-t javasolsz a kérdezőnek. Egy olyan elemet, ami arra való, hogy címkézzen/hivatkozzon űrlap-elemeket? Ezt most nem értem.

    Mutasd a teljes hozzászólást!
Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd