Autor Zpráva
xciza
Profil
zdravím.
Na webu mám následují formulář:
 <form action="vypocet#kotva" onsubmit="kontrola()" method="post" accept-charset="utf-8">

                            <table class="kov">

                                <tr>
                                    <td><h3><span class="zlato">Zlato</span></h3></td>
                                </tr>
                                <tr>
                                    <td><label><input id="24" type="radio" value="24" name="kov" onclick="testRadio()" checked>24 karátů</label></td>
                                </tr>
                                <tr>
                                    <td><label><input id="18" type="radio" value="18" name="kov" onclick="testRadio()">18 karátů</label></td>
                                </tr>
                                <tr>
                                    <td><label><input id="14" type="radio" value="14" name="kov" onclick="testRadio()">14 karátů</label></td>
                                </tr>
                            </table>
                            <table class="kov">
                                <tr>
                                    <td><h3><span class="stribro">Stříbro</span></h3></td>
                                </tr>
                                <tr>
                                    <td><label><input id="stribro_ryzi" type="radio" value="stribro_ryzi" name="kov" onclick="testRadio()">Ryzí</label></td>
                                </tr>
                            </table>
                            <table class="kov">
                                <tr>
                                    <td><h3><span class="platina">Platina</span></h3></td>
                                </tr>
                                <tr>
                                    <td><label><input id="platina_ryzi" type="radio" value="platina_ryzi" name="kov" onclick="testRadio()">Ryzí</label></td>
                                </tr>
                            </table>
                            <aside class="separator4"></aside>
                            <table class="slitina">
                                <tr>
                                    <td><h3>Slitina</h3></td>
                                </tr>
                                <tr>
                                    <td><label><input id="zlato" type="number" step="any" value="99.99" min="0" max="100" name="%zlata" onkeydown="unchecked()">% Zlata</label></td>
                                </tr>
                                <tr>
                                    <td><label><input id="stribro" type="number" step="any" value="0"  min="0" max="100" name="%stribra" onkeydown="unchecked()">% Stříbra</label></td>
                                </tr>
                                <tr>
                                    <td><label><input id="platina" type="number" step="any" value="0" min="0" max="100" name="%platiny" onkeydown="unchecked()">% Platiny</label></td>
                                </tr>
                            </table>
                            <aside class="separator4"></aside>
                            <table class="hmotnost">
                                <tr>
                                    <td><h3>Hmotnost</h3></td>
                                </tr>
                                <tr>
                                    <td><label><input type="text" name="gram" value="100">g</label></td>
                                </tr>
                                <tr>
                                    <td><label><button type="submit" name="odeslat" tabindex="11" accesskey="o" value="Odeslat">Spočítat</button></label></td>
                                </tr>
                            </table>
                        </form>

a k nemu JS kod:
<script>

            function testRadio(){
                if(document.getElementById('24').checked) {
                    document.getElementById("zlato").value = "99.99"; 
                    document.getElementById("stribro").value = "0";   
                    document.getElementById("platina").value = "0";
                }else if(document.getElementById('18').checked){
                    document.getElementById("zlato").value = "75";   
                    document.getElementById("stribro").value = "18";
                    document.getElementById("platina").value = "0";

                }else if(document.getElementById('14').checked){
                    document.getElementById("zlato").value = "58.5"   
                    document.getElementById("stribro").value = "35"   
                    document.getElementById("platina").value = "0"   
                }else if(document.getElementById('stribro_ryzi').checked){
                    document.getElementById("zlato").value = "0"   
                    document.getElementById("stribro").value = "99.99"   
                    document.getElementById("platina").value = "0"
                }else if(document.getElementById('platina_ryzi').checked){
                    document.getElementById("zlato").value = "0"   
                    document.getElementById("stribro").value = "0"   
                    document.getElementById("platina").value = "99.99"
                }

                
            }
            
            function kontrola(){
                var zlato = document.getElementById("zlato").value;
                var stribro = document.getElementById("stribro").value;
                var platina = document.getElementById("platina").value;
                var soucet = zlato + stribro + platina;
                
                if(soucet > 100){
                    alert('Součet procent kovů musí být menší nebo roven 100%.');
                }
                
            }
            
            function unchecked(){
                if( (document.getElementById("zlato").value != "99.99")){
                    document.getElementById('24').checked = false; 
                }
               

        </script>

ale jediné co me funguje tak je zmena hodnot v polich pri zmene zaskrtnuti radio buttonu. Potreboval bych ale jeste po odeslani formulare kontrolovat zda hodnoty v tech trech inputech nejsou vetsi nez 100 a dale odsktnout radio button pri zmene hodnoty v inputu. Prosím co tam mám spatne? díky


tak me tam chybela zavorka a problem vyresen


ale jeste bych k tomu mel dotaz: Takhle se me formulář vždy odesle i po tom co to vyhodi hlasku v alertu. ale jak zabranit tomu aby se form odeslal?
Chamurappi
Profil
Reaguji na xcizu:
Takhle se me formulář vždy odesle i po tom co to vyhodi hlasku v alertu.
<form onsubmit="return kontrola()" …>
A do funkce kontrola za alert dej return false.

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: