Autor | Zpráva | ||
---|---|---|---|
aladin Profil * |
#1 · Zasláno: 18. 2. 2013, 16:43:58
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> <span id='pocetznaku'>0 / 50</span> <textarea id="textareas" name="text" rows="3" OnKeyUp="textarea();"></textarea> <br> |
||
Trejpa Profil |
#2 · Zasláno: 18. 2. 2013, 17:23:16
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 * |
#3 · Zasláno: 18. 2. 2013, 18:15:17
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 * |
#4 · Zasláno: 19. 2. 2013, 09:12:40
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 |
#7 · Zasláno: 19. 2. 2013, 18:10:41
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 * |
#8 · Zasláno: 19. 2. 2013, 19:29:32 · Upravil/a: aladin
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 |
#9 · Zasláno: 19. 2. 2013, 20:23:41
aladin:
Narychlo jsem to upravil. Jestli budu mít čas, tak se na to ještě podívám. |
||
aladin Profil * |
#10 · Zasláno: 19. 2. 2013, 21:23:24
Trejpa:
supr,takhle to stačí díky moc :) |
||
peta Profil |
#11 · Zasláno: 20. 2. 2013, 11:58:32
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 * |
#13 · Zasláno: 21. 2. 2013, 09:03:44
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 |
#14 · Zasláno: 21. 2. 2013, 12:25:59
aladin:
Link, ktery jsi dal, funguje. Vyreseno. Svuj kod, ktery nefunguje, jsi nedal. Tim se stava problem tveho kodu neresitelnym. |
||
aladin Profil * |
#15 · Zasláno: 21. 2. 2013, 14:25:51
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 * |
#17 · Zasláno: 21. 2. 2013, 16:41:09
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 * |
#18 · Zasláno: 21. 2. 2013, 19:49:02
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 } }); google = "Cleditor" get html http://stackoverflow.com/questions/4786252/get-content-from-jquery-cleditor |
||
Časová prodleva: 11 let
|
0