Autor Zpráva
Anonymní
Profil *
dobry !!
napisal som si taky jednoduchy script:

<script language="JavaScript">

function countit(what){
formcontent=what.form.dostany.value
what.form.displaycount.value=formcontent.length
}
function countitw(){
var formcontent=document.wordcount.dostany.value
formcontent=formcontent.split(" ")
document.wordcount.wordcount3.value=formcontent.length
}
function cislo(){
if (event.keyCode == 13 && formcontent.length < 300)
{alert('NIE');event.returnValue= false;}}
</script>


tie prve dve funkcie mi pocitaju znaky a "slova" (medzery)
no a chcel by som ich obohatit o nieco, co by udavalo, ze ked je nieco medzi < a > ((X)HTML)
aby to do suctu neratalo da sa to ?
no a keby to slo, chcel by som aj zmenit to pocitanie slov tak, aby to pocitalo skutocne slova, a nie medzery. (ked dam 15 madzier za sebo a ni jeden znak, berie to ako 15 slov)

no a ten druhy kod mi zabrani (kvoli naslednemu spracovaniu textu) davat enter pred 300 znakmi
(podla prhlidaca). a chcel by som to zmenit nejak tak (schema):
function cislo(){

if (v obsahu textraey sa nachadza retazec "1nepocitat1")
{if (event.keyCode == 13 && pocet znakov < ako pocet znakov od zaciatku do retazcaa 1nepocitat1)
{alert('NIE');event.returnValue= false;}}
else {
if (event.keyCode == 13 && formcontent.length < 300)
{alert('NIE');event.returnValue= false;}}
}

nieako tak. chapete ako to mzslim ?? prosim pomozte, velmi y som to potreboval.
dakujem
Fred
Profil
Vypadá to takový IE only, něco podobného je tady počítání znaků v textarea
Anonymní
Profil *
me e e e ::::::::
prosiiim :::::::::..
Yuhů
Profil
tohle absolutně nechápu:

> no a chcel by som ich obohatit o nieco, co by udavalo, ze ked je nieco medzi < a > ((X)HTML)
> aby to do suctu neratalo da sa to ?
Leo
Profil
Videl bych to jedine na regularni vyrazy v JavaScriptu, Leo
Anonymní
Profil *
ahoj ahoj <b> bla bla bla </b> - to by bolo 30 znakov.
ja chcem aby to bolo len 23. aby sa neratalo <b> a </b> . rozumjes ?
Yuhů
Profil
no.... to je asi trochu složitější. Asi bych udělal nový string (proměnnou),
naplnil ji nějakým regulárem z původního řetězce (tohle z hlavy napsat neumím)
a pak bych spočítal znaky té proměnné.
Leo
Profil
var text = "bl<a>a bla <b class='neco'>ahoj</b>j";
var rv = /<[^>]*>/g;
var pole = text.match(rv);
var pocetznaku = text.length;
for (var i=0;i<pole.length;i++) pocetznaku = pocetznaku - pole[i].length;
alert(pocetznaku);

V promenne rv je regularni vyraz, ktery najde vsechny casti mezi <> (ale takove, ze v nich neni ukoncovaci znak >), vezme to v potaz i neukoncene tagy. Fce match rv pouzije aby vratila pole vsech nalezenych vyskytu. Cyklus for projde toto pole a odecita delky techto jalovych casti od cele delky retezce (pocetznaku). Snad to bude behat. Leo
Yuhů
Profil
Běhá to, otestoval jsem to. Dobrá práce, vidím, že se mám ještě co učit.

Jediné, co tam nechápu, je to, proč na řádku
var rv = /<[^>]*>/g;
není to
/<[^>]*>/g
v uvozovkách. Zjistil jsem, že to s uvozovkami nefunguje, ale nevím proč.
Leo
Profil
Kdyby to bylo v uvozovkach, tak by to byl retezec - a hledalo by to v textu presne tohle:

/<[^>]*>/g

Takhle - bez uvozovek - je to zapis regularniho vyrazu, a to je jiny typ promenne, nez string. V regularnich vyrazech je sila, a je skoda, ze se o nich bezne knizky o JavaScriptu moc nezminuji, i kdyz podpora v prohlizecich je velka (napriklad fce match beha od JavaScriptu 1.2 - to odpovida Netscape 4 a od JScriptu 3.0 - ten je implementovany v IE4), Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.