Počet znaků ve formuláři

9.09.08

K napsání tohoto skriptu mě inspiroval vertigo, jehož řešení se mi ne zcela líbilo. Budiž mu vzdát velký dík za inspiraci ;-). Takže teď už přejdeme k řešení. Mějme takový jednoduchý formulář:

<form>
<textarea style="width:350px; height:200px;" id="policko">
</textarea><br>
<div id="infobox" style="display: none">
Napsali jste: <input id="napsano" readonly><br>
Zbývá: <input id="zbyva" readonly>
</div>
</form>

V textarea budeme chtít hlídat znaky. Další políčka slouží k vypisování počtu zbývajících a již napsaných znaků. Oba mají přiřazen atribut readonly, takže uživatel je nebude moci měnit. Dále jsou oba inputy obaleny divem, který má nastaveno display: none. Tento div si zobrazíme až pomocí Javascriptu. Tím docílíme toho, že lidé s vypnutým Javascriptem tyto dva inputy vůbec neuvidí. Nicméně stále to není dokonalé, lidé s vypnutými CSS tyto inputy stále uvidí – to by šlo vyřešit tak, že samotné inputy vložíme do stránky pomocí Javascriptu.

Takže vše už máme připravené a zbývá už jen napsat javascriptovou funkci, která zařídí zbytek:

// Identifikatory textarea, kam je text psan
// a inputu, kde se vypisuji napsane znaky.
var policko = document.getElementById("policko");
var napsano = document.getElementById("napsano");
var zbyva = document.getElementById("zbyva");

// Div, ve kterem jsou inputy
var infobox = document.getElementById("infobox");

// Maximalni pocet znaku v policku
var maximum = 50;

// Má se po dosahnuti maxima zobrazit alert?
var vyskocit = false;

// Hlaska, ktera se zobrazi
var hlaska = "Maximální počet znaků je omezen na " + maximum + ".";

infobox.style.display = "block";
napsano.value = 0;
zbyva.value = maximum;

policko.onkeyup = function()
{
        pocet = policko.value.length;

        if(pocet > maximum)
        {
                policko.value = policko.value.substring(0, maximum);

                if(vyskocit)
                {
                        alert(hlaska);
                }
        }
        else
        {
                napsano.value = pocet;
                zbyva.value = maximum - pocet;
        }
}

Drobný komentář ke kódu: Na prvních řádcích se definují proměnné, které ukazují na textarea a na inputy. Ty mohou mít jakékoliv ID, stačí ho pak zapsat jako argument funkce getElementById. Například chcete-li počet již napsaných znaků vepisovat do inputu s identifikátorem „cauky“, změníte kód takto: var zbyva = document.getElementById("cauky");. Dále můžete nastavit identifikátor divu, který obaluje inputy, maximální počet znaků ve formuláři, jestli se má po dosáhnutí maxima zobrazit upozorňující alert a jaká hláška má případně vyskočit. O zbytek se už postará sám skript.

Vše si můžete prohlédnout na ukázkové stránce a případně si můžete stáhnout Javascriptový kód.

Aktualizace: Blbne to v Exploreru v quirk módu.

Komentáře

Pošli komentář

Komentáře jsou moderované. Každý komentář musí před publikováním autor Laboratoře schválit. Komentáře, které jistě nebudou zveřejněny: vulgární, vyvolávající flame, netýkající se tématu, komentáře psané bez diakritiky (háčky, čárky).

Komentáře jsou uzavřeny