Autor Zpráva
Roman99
Profil
Při zpracování BB značek došlo k samovolnému sežrání celého příspěvku. Pardon.
Ahoj, v rámci učení si vytvářím nějaké testy. V PHP mi to fachá, ale kontrola formuláře pomocí javascriptu nefachá. Můžete někdo poradit proč mi to nefachá??? :)

html:

<form name="form" action="pokus2.php" method="POST">
  <table cellpadding = "10px" cellspacing = "10px" >
   <tr>
    <td width = "300">
       <b>1) Hlavní město ČR je:</b><br> 
       <input type="radio" name="cr" value="1"> Praha <br>
       <input type="radio" name="cr" value="2"> Berlín<br>
       <input type="radio" name="cr" value="3"> Paříž <br><br>
       
       <b>2) Hlavní město SR je:</b><br> 
       <input type="radio" name="sr" value="2"> Praha <br>
       <input type="radio" name="sr" value="1"> Bratislava<br>
       <input type="radio" name="sr" value="3"> Madrid <br><br>
       
       <b>3) Hlavní město Polska je:</b><br> 
       <input type="radio" name="pol" value="2"> Řím <br>
       <input type="radio" name="pol" value="3"> Bern<br>
       <input type="radio" name="pol" value="1"> Waršava <br><br>
       
       <b>4) Hlavní město Rumunska je:</b><br> 
       <input type="radio" name="rum" value="1"> Bukurešť <br>
       <input type="radio" name="rum" value="3"> Atény<br>
       <input type="radio" name="rum" value="2"> Lublaň <br><br>
       
       <b>5) Hlavní město Bulharska je:</b><br> 
       <input type="radio" name="bul" value="3"> Podgorica <br>
       <input type="radio" name="bul" value="2"> Sarajevo<br>
       <input type="radio" name="bul" value="1"> Sofia <br><br>
     </td>
     
     <td> <br>
       <b>6) Hlavní město Albánie je:</b><br> 
       <input type="radio" name="alb" value="1"> Tirana <br>
       <input type="radio" name="alb" value="2"> Podgorica<br>
       <input type="radio" name="alb" value="3"> Helsinki <br><br>
       
       <b>7) Hlavní město Běloruska je:</b><br> 
       <input type="radio" name="belo" value="2"> Moskva <br>
       <input type="radio" name="belo" value="1"> Minsk<br>
       <input type="radio" name="belo" value="3"> Madrid <br><br>
       
       <b>8) Hlavní město Dánska je:</b><br> 
       <input type="radio" name="dan" value="2"> Berlín <br>
       <input type="radio" name="dan" value="3"> Reykjavík<br>
       <input type="radio" name="dan" value="1"> Kodaň <br><br>
       
       <b>9) Hlavní město Islandu je:</b><br> 
       <input type="radio" name="is" value="1"> Reykjavík <br>
       <input type="radio" name="is" value="3"> Islandia<br>
       <input type="radio" name="is" value="2"> Lublaň <br><br>
       
       <b>10) Hlavní město Velké Británie je:</b><br> 
       <input type="radio" name="vb" value="3"> Dublin <br>
       <input type="radio" name="vb" value="2"> Oslo<br>
       <input type="radio" name="vb" value="1"> Londýn <br><br>

       
       <input type="submit" onClick="over();">

     </td>       
   </tr>
   
   </table>
  </form>
  
  <script>
function form(){
if(document.form.cr.value=="") window.alert("nevyplnil jste hlavní město ČR!");
else if(document.form.sr.value=="") window.alert("nevyplnil jste hlavní město SR!");
else if(document.form.pol.value=="") window.alert("nevyplnil jste hlavní město Polska!");
else if(document.form.rum.value=="") window.alert("nevyplnil jste hlavní město Rumunska!");
else if(document.form.bul.value=="") window.alert("nevyplnil jste hlavní město Bulharska!");
else if(document.form.alb.value=="") window.alert("nevyplnil jste hlavní město Albánie!");
else if(document.form.belo.value=="") window.alert("nevyplnil jste hlavní město Běloruska!");
else if(document.form.dan.value=="") window.alert("nevyplnil jste hlavní město Dánska!");
else if(document.form.is.value=="") window.alert("nevyplnil jste hlavní město Islandu!");
else if(document.form.vb.value=="") window.alert("nevyplnil jste hlavní město Velké Británie!");
else (document.form.cr.value=="" && document.form.sr.value=="" && document.form.pol.value=="" && document.form.rum.value=="" && document.form.bul.value=="" && document.form.alb.value=="" && document.form.belo.value=="" && document.form.dan.value=="" && document.form.is.value=="" && document.form.vb.value=="") window.alert("Co jéé??? Nic jste nevyplnil!");
}
</script> 



Jo, a nefachá to ani takhle:
<script>
function over(){
if(document.form.cr.checked==false) window.alert("nevyplnil jste hlavní město ČR!");
else if(document.form.sr.checked==false) window.alert("nevyplnil jste hlavní město SR!");
else if(document.form.pol.checked==false) window.alert("nevyplnil jste hlavní město Polska!");
else if(document.form.rum.checked==false) window.alert("nevyplnil jste hlavní město Rumunska!");
else if(document.form.bul.checked==false) window.alert("nevyplnil jste hlavní město Bulharska!");
else if(document.form.alb.checked==false) window.alert("nevyplnil jste hlavní město Albánie!");
else if(document.form.belo.checked==false) window.alert("nevyplnil jste hlavní město Běloruska!");
else if(document.form.dan.checked==false) window.alert("nevyplnil jste hlavní město Dánska!");
else if(document.form.is.checked==false) window.alert("nevyplnil jste hlavní město Islandu!");
else if(document.form.vb.checked==false) window.alert("nevyplnil jste hlavní město Velké Británie!");
else (document.form.cr.value=="" && document.form.sr.value=="" && document.form.pol.value=="" && document.form.rum.value=="" && document.form.bul.value=="" && document.form.alb.value=="" && document.form.belo.value=="" && document.form.dan.value=="" && document.form.is.value=="" && document.form.vb.value=="") window.alert("Co jéé??? Nic jste nevyplnil!");
}
</script>
_es
Profil
Roman99:
A skadiaľ si to celé okopíroval? Prečo by to malo niečo robiť? V JS definuješ funkciu form, no nič s ňou nerobíš.

kontrola formuláře pomocí javascriptu nefachá.
Kde si si naštudoval, ako by mala taká kontrola pomocou JS vyzerať? A keď si to niekde nájdeš, nazvi funkciu namiesto form trebárs kontrola, lebo to môže v istých situáciách kolidovať s objektom formulára.
Chamurappi
Profil
Reaguji na Romana99:
Toho, že máš funkci nazvanou form a voláš funkci over, sis asi už všimnul.

if(document.form.cr.value=="") 
Takhle to bohužel nefunguje. Na document.form sice jsou objekty reprezentující formulářové prvky, ale každý <input type="radio"> je přítomen individuálně. V document.form.cr je tedy kolekce elementů (de facto pole). V document.form.cr[0] je první, v document.form.cr[1] druhý, atd. — a každý z nich samozřejmě má i svoji value. Potřebuješ kontrolovat checked a projet pokaždé všechny tři možnosti. Na tvém místě bych si na to vzal pole obsahující name a dvojici cyklů, z nichž jeden by procházel přes tyto názvy v poli a druhý uvnitř toho prvního přes ty tři možnosti.

cellpadding = "10px" cellspacing = "10px"
Do HTML atributů se px nepíše.
_es
Profil
Roman99 [#1]:
Okrem toho, že ti tam chýbajú úplné základy celej kontroly (pozri si v nejakej vzorovej ukážke, kde je príkaz return), by sa mala radšej použiť udalosť formulára onsubmit.
Roman99
Profil
_es:
Myslím, že to bylo z těhlech stránek
http://www.tvorba-webu.cz/javascript/checked.php


_es, Chamurappi:
Díky moc za odpovědi. Teď šrotím PHP, ale teorie bylo dost, potřebuji názorný příklady, tak si dělám ty testy. Z HTML jsem trochu vypadl, protože CSS externě má své kouzlo, takže jsem trochu pozapomínal. Takovou ochranu v javascriptu potřebuji nato, že když někdo nějaké políčko nezaškrtne, vyskočí hláška ať to doplní. Budu zkoušet a zase se ozvu. Díkes. Roman
_es
Profil
Roman99:
Myslím, že to bylo z těhlech stránek
No tak si natrafil na zlý učebný príklad, skús nájsť iný. Obvykle je „pod kontrolou pomocou JS“ myslené to, že ak formulár kontrole nevyhovuje, tak nebude odoslaný a návštevník je vyzvaný na zadanie správnych hodnôt do formulára.
jenikkozak
Profil
Roman99:
Myslím, že to bylo z těhlech stránek
http://www.tvorba-webu.cz/javascript/checked.php
Ten web obsahuje spoustu zavádějících informací, neupozorňuje na nevýhodnost určitých postupů a v příkladech je mnohdy použit podivný způsob zápisu. Nedá se to doporučit jako dobrý výukový materiál.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0