Autor Zpráva
BunnyBugs
Profil *
Ahoj, mám prosbičku.
Mám funkci na počet znaků v řetězci, ale při prvotním načtení stránky se mi nezobrazí nic, až když začnu psát.
Jak udělám to, aby se číslo zobrazilo ihned po načtení, třeba nula, když není nic předvyplněno, nebo počet znaků předvyplněného textu a pak to normálně dál počítalo?
Funkce vypadá takto:

function pocet_znaku(){
            document.getElementById("zobraz_pocet").innerHTML = pocitani.value.length;
            }

A ve formuláři:

<input type="text" ... id="pocitani" onKeyUp="pocet_znaku()" maxlength="50" ... <p>Už jsi napsal <span id="zobraz_pocet"></span> znaků! ...

Už tady po diskuzi lítám skoro dva dny a vůbec se mi nedaří, tak děkuji za každou radu :)
Tori
Profil
Můžete dopsat výchozí hodnotu přímo do HTML. Anebo někde za formulářem zavolat tu funkci.
BunnyBugs
Profil *
No ale jak?, to je to, co nevím.
A jde o to, že to počáteční číslo je proměnlivé, protože se jedná o editaci záznamů databáze (MySQL), kde řetězec už může mít nějaké znaky.
Chro
Profil
Třeba zavolat funkci po načtení stránky.
<body onload="pocet_znaku()">
BunnyBugs
Profil *
Jo, to je ono, moc totiž javaskriptu nerozumím.
Tohle funguje, díky moc :)
BunnyBugs
Profil *
A mám další problém :(
Pokud chci tuto funkci použít vícekrát v jednom formuláři, tak to nefunguje :(
Jak to udělat, abych na každé pole nemusel nemusel psát stejnou funkci s jiným id několikrát?
Děkuji
juriad
Profil
Nějak takto:
http://kod.djpw.cz/emcb

Jednotlivé inputy mají id začínající na "pocitani". Spany mají stejné id, jen je zakončená na "-pocet".
BunnyBugs
Profil *
To je ono, super, díky moc :)
CZghost
Profil
BunnyBugs:
Jak to udělat, abych na každé pole nemusel nemusel psát stejnou funkci s jiným id několikrát?
To nepůjde, javascript je stavěný na objektech buď s name nebo id, případně proprietárních objektech dokumentu (například this nebo document samotný). Nijak jinak ti to nebude fungovat.
EDIT: Tak to vypadá, že jsem přišel s křížkem po funuse :D
BunnyBugs
Profil *
CZghost:
Jojo, nápověda od juriad fakt funguje :)
Jen se mi tedy u pole textarea nezobazuje počáteční počet znaků, dokud nestisknu klávesu. Kde je zakopaný pes? Trik z příspěvku [#4] Chro nefunguje :P
Tori
Profil
No a proč to prostě nenapíšete přímo do toho prvku? Už jsi napsal <span id="zobraz_pocet">0</span> znaků!
BunnyBugs
Profil *
Tori:
Ta 0 by tam šla, ale jen v případě, že by při každém načtení ta nula vždy byla. Vzhledem k tomu, že se načítají informace z databáze pro editaci, tak ten textový řetězec je proměnlivý a v málokterém případě je prázdný.


Ale díky za tu nulu, protože mě to nakoplo a stačí místo nuly dosadit strlen()
Tak děkuji za všechny rady.
Tori
Profil
Mně ten juriadův ale kód funguje správně, nula se zobrazí hned při načtení stránky. [#4] není potřeba. Nevím, co vám na tom zlobilo.
Pro textarea stačí jednoduchá úprava (mohla by tam být ještě podmínka, že prvek formuláře je textové pole, ale když nebudete dávat stejná ID i něčemu jinému, tak to nevadí): http://kod.djpw.cz/hmcb
Místo strlen bude lepší mb_strlen (pokud používáte kódování UTF-8, tak by vám strlen vracelo jiný výsledek než počítání znaků v JS).
BunnyBugs
Profil *
Tori:
Stejná ID určitě nedávám, jen nevím proč, ale v poli textarea mi to nefungovalo, v ostatních ano.
Nicméně jsem doplnil dle rady plus tu funkci strlen() a šlape to, jak má.
Jinak díky za připomenutí mb_strlen(), už jsem ten problém někde četl a zapomněl na to, takže to ještě změním.
Díky.

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: