Formuláře a CSS

JavaScrikpt a webové formuláře

JavaScript ve spojení s webovými formuláři se používá již velmi dlouho. Používá se běžně k okamžité kontrole toho, jetsli jsou pole formuláře vyplněná správně ještě před odesláním dat na server.

Získání dat z formuláře

Dříve než na základě nějakých poskytnutých dat můžeme něco ověřit je třeba data z formuláře vytáhnout. A tohoto docílíme přefixem document.forms. Stejně jako u ostatních elementů lze i u formuláře přidělovat id či upravovat atributy. Vytvořme si tedy formulář:

                <form id="formular" action="#" onsubmit="return zkontrolujFormular();">
                <p>Uživatelské jméno: <input id="textbox1" name="textJmeno" type="text" /></p>
                <p<input id="odesliFormular1" type="submit" /> </p>
            

K formuláři je následně možné přistoupit pomoci jeho id nebo indexu:

                document.forms["formular"]
            

Tímto jsme si zajistili přístuk k formuláři a pomocí příkazu value je možné získat data z formuláře.

                //Například
                document.forms["formular"].textJmeno.value
            

Neboť je práce s jednotlivými prvky formuláře obdobná tak zde uvedu pouze jeden příklad, který obsahuje ukázku práce s většinou prvků:

                function nastav(typ) {
                    if (typ.value == "Zeleninový speciál") {
                        document.getElementById("papricky").checked = "true";
                        document.getElementById("cibule").checked = "true";
                        document.getElementById("houby").checked = "true";
                    } else if (typ.value == "Masový speciál") {
                        document.getElementById("parek").checked = "true";
                        document.getElementById("cabajka").checked = "true";
                        document.getElementById("sunka").checked = "true";
                    } else if (typ.value == "Hawaii") {
                        document.getElementById("sunka").checked = "true";
                        document.getElementById("ananas").checked = "true";
                    }
                }
                //Zaškrtávací pole nabývá pouze hodnot true nebo false!
    
                function pripravitPizzu() {
                    var pocetPoli = document.forms["pizzaFormular"].ingredience.length;
                    var kurka = document.forms["pizzaFormular"].kurka;
                    var velikost = document.forms["pizzaFormular"].velikost;
                    var pocetKurek = kurka.length;
                    var pocetVelikosti = velikost.length;
                    var novyElement = document.createElement("p");
                    novyElement.setAttribute("id","objednavka");
                    document.body.appendChild(novyElement);
                    novyElement.appendChild(document.createTextNode("Tato pizza bude 
                                                                            obsahovat:"));
                    for (var c = 0; c < pocetKurek; c++) {
                        if (kurka[c].checked) {
                              var novyElement = document.createElement("p");
                              novyElement.setAttribute("id","kurkaElement" + i);
                              document.body.appendChild(novyElement);
                              novyElement.appendChild(document.createTextNode(kurka[c].value + 
                                                                                  " kůrka"));
                        }
                    }
                        for (var s = 0; s < pocetVelikosti; s++) {
                            if (velikost[s].checked) {
                                  var novyElement = document.createElement("p");
                                  novyElement.setAttribute("id","velikostElement" + i);
                                  document.body.appendChild(novyElement);
                                  novyElement.appendChild(
                                        document.createTextNode(velikost[s].value + 
                                                                            " velikost"));
                            }
                        }
                        for (var i = 0; i < pocetPoli; i++) {
                            if (document.forms["pizzaFormular"].ingredience[i].checked) {
                                  var novyElement = document.createElement("p");
                                  novyElement.setAttribute("id","novyElement" + i);
                                  document.body.appendChild(novyElement);
                                  novyElement.appendChild(document.createTextNode(
                                                document.forms["pizzaFormular"].
                                                                ingredience[i].value));
                            }
                        }
                    }
                <form id="pizzaFormular" action="#" onsubmit="return false;">
                <p>
                <input type="button" onclick="nastav(zelenSpecial)" 
                name="zelenSpecial" value="Zeleninový speciál" />
                <input type="button" onclick="nastav(masoSpecial)" name="masoSpecial" 
                value="Masový speciál" />
                <input type="button" onclick="nastav(hawaii)" name="hawaii" value="Hawaii" />
                </p>
                <table>
                <tr><td>Ingredience</td>
                <td>Kůrka</td>
                <td>Velikost</td>
                </tr>
                <tr>
                <td><input type="checkbox" id="parek" value="Párek" 
                            name="ingredience" />Párek</td>
                <td><input type="radio" name="kurka" value="Normální" 
                            checked="checked" id="kurka1" />Normální</td>
                <td><input type="radio" name="velikost" value="Malá" 
                            checked="checked" id="vel1" />Malá</td>
                </tr>
                <tr>
                <td><input type="checkbox" id="cabajka" value="Čabajka" name="ingredience" />
                Čabajka</td>
                <td><input type="radio" name="kurka" value="Tlustá" id="kurka2" />Tlustá
                </td>
                <td><input type="radio" name="velikost" value="Střední" id="vel2" />Střední
                </td>
                </tr>
                <tr>
                <td><input type="checkbox" id="sunka" value="Šunka" name="ingredience" />Šunka
                </td>
                <td><input type="radio" name="kurka" value="Tenká" id="kurka3" />Tenká</td>
                <td><input type="radio" name="velikost" value="Velká" id="vel3" />Velká</td>
                </tr>
                <tr>
                <td><input type="checkbox" id="papricky" 
                        value="Zelené papričky" name="ingredience" />Zelené papričky</td>
                <td></td>
                </tr>
                <tr>
                <td><input type="checkbox" id="houby" value="Houby" name="ingredience" />
                Houby</td>
                <td></td>
                </tr>
                <tr>
                <td><input type="checkbox" id="cibule" value="Cibule" name="ingredience" />
                Cibule</td>
                <td></td>
                </tr>
                <tr>
                <td><input type="checkbox" id="ananas" value="Ananas" name="ingredience" />
                Ananas</td>
                <td></td>
                </tr>
                </table>
                <p><input type="submit" id="odesliFormular" name="odesliFormular" 
                        value="Připravit pizzu" onclick="pripravitPizzu();" /></p>
                </form>
            

JavaScript a CSS

Pokud chceme pomocí JavaScriptu vytvořit dynamické a graficky vynikající stránky, ať už chceme nebo ne, tak CSS pomocí JavaScriptu budeme muset využít. Pomocí této funkce může pomocí jednoduché funkce rychle a účině třeba naformátovat tabulky na celém webu. Ukážeme si tedy jak jednoduše změnit barvu odkazu na webové stránce.

                <script type="text/javascript">
                    var odkaz = document.getElementById("odkaz");
                    odkaz.style.color = "blue";
                </script>
                <body>
                <a href="#">Tady tohle je odkaz, který jsme si upravili</a>
                </body>
            

Osobně si myslím, že není co víc si o stylech pomocí JavaScriptu víc vysvětlovat, proto jsem níže uvedl tabulku, která porovnává rozdíly mezi příkazy CSS a příkazy CSS využívanými pomocí JavaScriptu.

CSS JavaScript
background
background-attachment
background-color
background-image
background-position
background-repeat
background
backgroundAttachment
backgroundColor
backgroundImage
backgroundPosition
backgroundRepeat
border
border-color
border-style
border-width
Všechny ostatní vlastnosti týkající se rámečku,
jako jsou border-bottom, border-bottom-color apod.
border
borderColor
borderStyle
borderWidth
bottom bottom
clip clip
color color
cursor cursor
display display
font
font-family
font-size
font-size-adjust
font-stretch
font-style
font-variant
font-weight
font
fontFamily
fontSize
fontSizeAdjust
fontStretch
fontStyle
fontVariant
fontWeight
height height
left left
letter-spacing letterSpacing
line-height lineHeight
list-style
list-style-image
list-style-position
list-style-type
listStyle
listStyleImage
listStylePosition
listStyleType
outline
outline-color
outline-style
outline-width
outline
outlineColor
outlineStyle
outlineWidth
overflow overflow
right right
text-align textAlign
text-decoration textDecoration
text-indent textIndent
text-shadow textShadow
text-transform textTransform
top top
vertical-align verticalAlign
visibility visibility
width width
word-spacing wordSpacing
z-index zIndex