Autor Zpráva
aladin
Profil *
zdravím,
trochu jsem se zamotal v jednom scriptu...a to v textarea počet znaku...
můj cíl: zjistit kolik znaku je napsáno v textarea a vypsat je do spanu,
poté přes podmínku zajistit aby po překročení 50 znaku připsal +500 bonusu
také zajistit že pokud se počet znaku bude rovnat 50 tak se změní text color na red a po překročení 50 se zas dá do bílé..
zde je ten script..můžete mě prosím napsat kde je chyba?...
Script:
<script>
function textarea(){ 
  if(document.getElementById('textareas').value.length < 50){ 
    var znaku = 50;
    document.getElementById('disabledInput').value = '500'; 
  }
  
  else if(document.getElementById('textareas').value.length > 50 ){ 
    var znaku = 50;
    document.getElementById('disabledInput').value = '500';     
  }

  else if(document.getElementById('textareas').value.length == 50){ 
    var znaku = 50;
    document.getElementById('disabledInput').value = '500'; 
    document.getElementById('pocetznaku').style.color="#FF0000";    
  }
  
  else if(document.getElementById('textareas').value.length < 100){
    var znaku = 100;
    document.getElementById('disabledInput').value =+ '500';
    document.getElementById('pocetznaku').style.color="#FFFFF";         
  }
  
    document.getElementById('pocetznaku').innerHTML = document.getElementById('textareas').value.length+' / '+znaku;  
  
}
</script>     
Html
<span id='pocetznaku'>0 / 50</span>
<textarea id="textareas" name="text" rows="3" OnKeyUp="textarea();"></textarea> <br>
Trejpa
Profil
aladin:
Máš divně postavené podmínky a jejich následky. Na první pohled: Bílá barva (opravdu nemá být písmo výchozí černé?) se nazapisuje #FFFFF, ale #FFFFFF, #fff nebo white. Přičtení k aktuální hodnotě se neprovádí operátorem =+, ale +=. Do posledního else se if nedává a nechá se samotné vykonat pro všechny ostatní případy (co by měl tvůj skript udělat po napsání stého znaku?).

Podle tvého zadání není třeba složitého větvení, vždy se zjišťuje jedna ze dvou hodnot. Trochu jiné by to bylo, kdyby se červená barva a připočtení hodnoty 500 mělo opakovat pro každých 50 znaků, ne jen jednou, jak jsi napsal.

<form action="#" onSubmit="return false;">
<span id='pocetznaku'>0 / 50</span><br><input name=disabledInput id=disabledInput value=0><br>
<textarea id="textareas" name="text" rows="3" OnKeyUp="textarea();"></textarea>
</form>

<script>
function textarea(){
var znaku = 50;
document.getElementById('pocetznaku').style.color=(document.getElementById('textareas').value.length==50)?"#F00":"";
document.getElementById('disabledInput').value=(document.getElementById('textareas').value.length<50)?"500":"1000";
document.getElementById('pocetznaku').innerHTML=document.getElementById('textareas').value.length+' / '+znaku;
}
window.onload=textarea();
</script>
aladin
Profil *
tak jsem to myslel,že by se to mělo opakovat,ale ne po 50 ale po tolika,kolik bych tam napsal..
mám to na jeden web kterej když napíše vždy nějaký požadovaný text o nějaké délce..např 100 znaku,tak dostane 100bodu
pokud napíše 150,tak 150bodu apod..
ty body budou ale nějak asi 50znaku,150znaku,200znaku,300znaku 500znaku apod..to ještě nevím,podle toho jak to ještě udělám

Trejpa:
co by měl tvůj skript udělat po napsání stého znaku?
100znaku není maximum,bude se to stupnovat do asi 5000znaku
pak by to mělo přestat jít psát,změnit asi textarea do disabled

takže bych potřeboval asi tu barvu zobrazovat při daných počtu znaku,to stejné i u těch přičtení value u Id disabledinput

Jinač,u toho

document.getElementById('disabledInput').value=(document.getElementById('textareas').value.length<50)?"500":"1000";
tohle je pro mě asi nepoužitelný,jelikož 500 a 1000 není konečný,
jak jsem psal nahoře,další znaky bude např že pokud dosáhne počtu znaku 200 tak se přičte 2000 do Id disabledInput..a tak dále..
aladin
Profil *
Trejpa:
tím kodem jsi mě docela zmátl..ted nevím ani jak začít :D
zkoušel jsem taky vylepšit ten můj kod,ale nějak to nejde
jak udělám podmínku že pokud už jsem na 50 znaku,tak od 50 je větší 100
tak to změní var?..
peta
Profil
var m,n,v, o1,o2,o3;
o1 = document.getElementById('textareas')
o2 = document.getElementById('pocetznaku')
o3 = document.getElementById('disabledInput');
m = 50;
n = 500;
v = o1.value.length * 1;
o2.innerHTML = v;
o2.className = v == m || v > m + n ? "red" : "white";
o3.innerHTML = v > m ? m + n : n;
pcmanik
Profil
peta:
Aký ma zmysel vytvoriť premennú a o riadok nižšie jej priradiť hodnotu? Prečo nie hneď?
Taktiež to pomenovanie premenných je ako z učebnice, ako sa to nemá robiť.
Na riadkoch 2 a 3 ti chýba bodkočiarka.
aladin naviac chce meniť farbu a nie triedu prvku.
Trejpa
Profil
aladin:
jak udělám podmínku že pokud už jsem na 50 znaku,tak od 50 je větší 100
Ne. Uděláš si jedno pole, ve kterém budou hraniční hodnoty a druhé, ve které budou body (bonusy). Zohledníš i bonus nad poslední hodnotou, takže druhé pole bude mít o jednu položku více. Cyklem porovnáš, zda počet znaků v zadaném textu nepřekročil některou z nastavených hodnot v prvním poli. Pokud ano, použiješ body z následujícího chlívečku druhého pole.

Bodování za počet znaků

Z tvého zadání není zřejmé, zda ta červená barva má být těsně před nebo za hranicí přidávání bonusu (udělal jsem to před). Stejně tak není jasné, zda chceš počet znaků, z kolika se odpočítává, navyšovat podle hranic udělování bonusů, nebo ponechat první hranici napevno (vytušil jsem první možnost).

Kdyby to bylo lineární (například každých 50 znaků přidat 500 bodů), tak by to šlo napsat jednodušeji. Zdá se, že peta nepochopil zadání.
aladin
Profil *
Trejpa:
Super,přesně takhle jsem to myslel..díky moc :)


aladin:
ještě bych tam asi doplnil max počet znaku,třeba na těch 5000 znaku
to asi nebude ta hranice že?jsem to zkoušel a nefakčí..
var hranice=0;
Trejpa
Profil
aladin:
Narychlo jsem to upravil. Jestli budu mít čas, tak se na to ještě podívám.
aladin
Profil *
Trejpa:
supr,takhle to stačí díky moc :)
peta
Profil
OT
pcmanik: Jeste stesti, ze tvou ucebnici javascriptu jsem necetl :)
Prijde mi, ze muj kod je mnohem prehlednejsi a srozumitelnejsi nez kod prispevku #1. Vytahnu si vsechny objekty, se kterymi budu pracovat do jednoducheho zapisu "o1"... na jednom miste. Nezaplacavam si prehledny kod slozitym zapisem. A pak mam jeste spoustu dalsich duvodu.
Nicmene, kod, ktery jsi zminil ty... Tys zadny nenapsal? Aha!
"Na riadkoch 2 a 3 ti chýba bodkočiarka." V js neni povinna. Ano, nemam ji tam.
pcmanik
Profil
peta:
Akú moju učebnicu o JavaScripte? Neviem o čom hovoríš.

Pre teba jednoduchý zápis, pre programátora po tebe nelúštiteľný kód, resp. zabije zbytočný čas na zistenie čo v tých premenných vlastne má.
Bodkočiarka nieje povinná, to máš pravdu avšak je dobrým zvykom ju vždy uvádzať.
aladin
Profil *
Trejpa:
Ještě mám na tebe jednu otázku..
já mám cleditor..
http://premiumsoftware.net/cleditor/
napojil jsem to na něj,ale nefunguje mě to..
pokud tam napíšu nějakej text,a dám zobrazit kod (jak to ukazuje html kod)
tak se mě to tam připočítá..ale jinač to na to nefunguje..
bude to v zapsání nebo to nemůže ani jít?
(ten tvuj kod jsem předělal(jen funkci,jelikož ten editor má stejný název)
<textarea id=textarea2 class="cleditor" name=text cols=40 rows=5 onkeypress="over();" OnKeyUp="textareas(); textarea();"></textarea><br>

textareas() -> počítá počet znaku
textarea() -> Cleditor

asi bych řekl že to bude v tom zápisu OnKeyUp..nepřipadá mě že by se to takhle mělo zapisovat..zkoušel jsem to i jinač,ale nejde.
Díky
peta
Profil
aladin:
Link, ktery jsi dal, funguje. Vyreseno.
Svuj kod, ktery nefunguje, jsi nedal. Tim se stava problem tveho kodu neresitelnym.
aladin
Profil *
peta:
já mám kod od trejpa,od odkaz dával nahoře,mám ho uplně stejný...
ten link co jsem dal,to je odkaz na textarea editor kterej mám na stránkách
problém je,že to nefunguje dokupy,když zapnu editor tak nejde počítání znaku
peta
Profil
aladin: Pochop, k vyreseni tveho noveho problemu lide nebudou skladat kousicky kodu nebo za tebe zabudovavat editor. Ne. Udelej link, kod, ktery se da spustit a pak ti na nem najdeme chyby.
Rikas, ze jsi vzal kod od Trejpa a pak s nim neco smolil. Ale protoze my o tom tvem novem kodu nic nevime, nemuzeme ti poradit.
Obecne ti muzu jen rici, ze vizualni editor funguje jako html stranka. Uz to neni textarea, on textareu smaze a vlozi tam treba iframe se strankou. U html kodu se pocita pocet znaku jinak nez u textarea, protoze v htm kodu mas tagy. V textarea mas jen pismena.
Pokud mi neveris, tak udelej v textarea text tucne. Nejde to.
aladin
Profil *
peta:
aha,to jsem nevěděl..musel jsem udělat hosting jelikož to mám na localhostu a nemám veřejnou ip..
http://soubory.tode.cz/textarea/

Díky za info a taky předem díky za veškerou radu
aladin
Profil *
aha,podle zdrojáku to není textarea ale body...
takže upravit js toho cleditor přidat tomu nějaký ID a upravit script pro počítání znaku?
tedka ten script nepujde,jelikož je udělanej na textarea že? takže kdybych přidal jen id,a funkce do toho body by nešlo
peta
Profil
google = ckeditor character count
http://ckeditor.com/forums/CKEditor-3.x/Character-count
Z toho je tak zajimavy radek obsahujici regularni vyrazy, ktery danym zpusobem smaze html tagy nebo mezery z promenne
editor.getData().replace(/<[^>]*>|\s/g, '').length

google = cleditor character count
http://stackoverflow.com/questions/7781404/jquery-cleditor-get-textarea-value-on-keyup
Navazani udalosti onkeyup na editor
$("#element").cleditor({
keyup : function (text) {
 alert(text);
 // do something
}
});
Pripadne si to tam projdi cele. Mno a pak ti zbyva to propojit s tim, co uz vis.

google = "Cleditor" get html
http://stackoverflow.com/questions/4786252/get-content-from-jquery-cleditor

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: