Autor | Zpráva | ||
---|---|---|---|
Eja Profil * |
#1 · Zasláno: 28. 11. 2013, 07:42:05
Ahoj,
mám takový formulář, do kterého bych potřebovala dostat ještě část, kdy by při nevyplnění jména, telefonu a adresy vyskočila hláška: "Nebyla vyplněna povinná pole!" nebo něco podobného. Jak na to? Děkuji moc. V HTML: <form name="objednavka" action="odeslan.html"> <table> <tr> <td>Vaše jméno:</td> <td><input type="text" name="jmeno"></td> </tr> <tr> <td>Váš telefon:</td> <td><input type="text" name="telefon"></td> </tr> <tr> <td>Adresa doručení:</td> <td><input type="text" name="adresa"></td> </tr> <tr> <td>Den:</td> <td> <select name="vyber"> <option value="pondeli">Pondělí</option> <option value="utery">Úterý</option> <option value="streda">Středa</option> <option value="ctvrtek">Čtvrtek</option> <option value="patek">Pátek</option> </select> </td> </tr> <tr> <td>Polévka:</td> <td> <input type="text" name="polevka" value="Zadejte počet porcí"><br> </td> </tr> <tr> <td>Hlavní jídlo:</td> <td> <input type="text" name="jidlo" value="Zadejte počet porcí"><br> </td> </tr> <tr> <td>Dezert:</td> <td> <input type="text" name="dezert" value="Zadejte počet porcí"><br> </td> </tr> <tr> <td>Chci malou porci:</td> <td> <input type="checkbox" name="mala"> </td> </tr> <tr> <td colspan="2">Slevy: <select name="sleva"> <option value="plna">Normální</option> <option value="student">Student</option> </select> </td> </tr> <tr> <td>Cena celkem:</td> <td> <input type="text" name="celkem"> </td> </tr> </table> <input type="button" value="Spočítej" onclick="objednavky()"> <p align="right"><input type="submit" class="button" value="Odeslat"> <input type="reset" value="Vymazat"></p> </form> V PHP: <script> function objednavky() { var polevka = 25; var jidlo = 85; var dezert = 25; var mala = 0.8; var slevaStudent = 0.95; var celkem = eval(document.objednavka.polevka.value)*polevka; celkem += eval(document.objednavka.jidlo.value)*jidlo; celkem += eval(document.objednavka.dezert.value)*dezert; if(document.objednavka.mala.checked) { celkem = celkem*mala; } switch (document.objednavka.sleva.value){ case "student": celkem = celkem*slevaStudent; break; } if(document.objednavka.polevka.value) or (document.objednavka.jidlo.value) or (document.objednavka.dezert.value) or (document.objednavka.) document.objednavka.celkem.value = celkem; } </script> |
||
Taps Profil |
#2 · Zasláno: 28. 11. 2013, 10:35:59
Eja:
zkus použít <form name="objednavka" action="odeslan.html"onSubmit="return objednavky()"> |
||
maks Profil |
#3 · Zasláno: 28. 11. 2013, 10:58:28
Eja:
jak píše Taps, v případě špatn vyplněného formuláře se musí vrátit na onsubmit return false .
Tzn. ještě musíš dodat do funkce objednavky return false pro případ, kdy ěnco není (správně) vyplněno. Nebo onsubmit="objednavky return false" (nejsem si jist, jestli bude fungovat).
|
||
_es Profil |
#4 · Zasláno: 28. 11. 2013, 11:32:28
maks:
„Nebo onsubmit="objednavky return false" (nejsem si jist, jestli bude fungovat).“
Nebude, je to syntakticky chybne. |
||
maks Profil |
#5 · Zasláno: 28. 11. 2013, 11:38:58
_es:
samozřejmě, myslel jsem objednavky(); return false . To je s. správně, ale funkčností si jist nejsem (nemohu teď testovat).
NIcméně návratová hodnota rovnou ve funkci se mi zdá být lepší, to i píšu výše. |
||
_es Profil |
#6 · Zasláno: 28. 11. 2013, 11:47:35
maks:
„myslel jsem objednavky(); return false “
No ale to by sa predsa formulár neodoslal nikdy - jedine, že by ho odoslala funkcia objednavky , čo je zase zbytočne komplikované.
|
||
pako Profil * |
#7 · Zasláno: 28. 11. 2013, 12:18:26
Ten skript co mas napisany je pekna divocina ;)
Na overenie vyplnenia policok asi mozes pouzit nieco ako na riadku 19 s tym, ze pouzijes operator && . Takisto by si mal or nahradit operatorom || , kedze or v takejto podobe v javascripte neexistuje.
Ked potrebujes z inuputu vydolovat cislo pouzi nejaku funkciu urcenu na prevod retazca na cislo, napriklad Number alebo mozes ziskat ciselnu cast s parseInt .
|
||
_es Profil |
#8 · Zasláno: 28. 11. 2013, 12:42:10
Eja:
Podľa [#1] je to vraj „v PHP“. Kde v PHP? JavaScript je súčasť HTML kódu. |
||
Eja Profil * |
#9 · Zasláno: 28. 11. 2013, 13:06:26
Není to PHP, je tam chyba, mělo tam být napsané JavaScript, omlouvám se :)
A kde mám pak nastavit, která políčka budou povinná (potřebuji, aby povinná byla jen 3, zbytek nemusí být vyplněný) a nastavím svou hlášku? To právě nevím :( Když použiji řešení od Taps, tak mi to vrátí formulář k vypsání pokaždé, když člověk nevyplní i pole, které vyplněné být nemusí (např. pole polévka, kde může, ale nemusí napsat počet ks polévky)... Děkuji moc. |
||
maks Profil |
Eja:
na ř. 19 if (!document.objednavka.polevka.value || !document.objednavka.jidlo.value) { // vsechna povinna pole return false; } ale celkově to je hrozný paskvil. Ty eval y tam nemají co dělat. Například.
|
||
hrouda Profil |
#11 · Zasláno: 28. 11. 2013, 14:59:36
jsem začátečník ale zkusil bych dat required a dat javascript pokud to nebude vypsáno
|
||
Taps Profil |
#12 · Zasláno: 28. 11. 2013, 18:46:02
hrouda, Eja:
níže uvedené <input type="text" name="nazev" required> Samozřejmě že je vhodné validaci ošetřit i na straně php |
||
Časová prodleva: 10 let
|
0