Vkladanie smajlíkov do formuláru pomocou javascript-u

Vkladanie smajlíkov do formuláru pomocou javascript-u

Smajlíci patria do každej diskusie a nemôžu chýbať ani v komentároch k článkom. Takisto sa dá povedať, že smajlíci sú veľmi obľúbení a určite ich väčšina ľudí preferuje viac ako len obyčajný zápis typu :-) - čo znamená úsmev.

Ako začneme?

Najprv sa uistíme, že na stránke vôbec máme niečo ako formulár( tag <form>). Ďalej zistíme, že tento formulár pracuje na to aby odosielal príspevky priamo do diskusii. Teraz predpokladám, že máte vybrané miesto.

Zapisujeme JavaScript na stránku

Prvý JavaScript-ový kód budete musieť vložiť buď ako externý súbor alebo ho jednoducho necháte priamo na stránke. Ja mám radšej ten prvý spôsob a preto ho tak aj vykonáme. Vytvoríme si nový súbor napr. javascript.js. Do tohoto súboru budeme ukladať všetok javascript-ový kód aký nás napadne. Ako zahrnúť externý súbor na stránku niektorí z vás vedieť môžu a niektorí nie a preto uvádzam spôsob ako na to.
<script src="javascript.js" type="text/javascript"></script>
Tento kód musíte(v skutočnosti nemusíte ale podľa mňa je to tak prehľadnejšie) vložiť do hlavičky stránky, čiže do tagu <head>. Teraz prídem konečne k javascriptu. Najprv napíšem potom vysvetlím.
function add(data)

{

document.getElementById('prispevok').obsah.value = 

document.getElementById('prispevok').obsah.value + data + "";

}
Podobne ako to poznáte s jazyka PHP aj v javascripte sa dajú funkcie vytvárať. Môžu mať aj svoj parameter - v našom prípade je to data. Najprv táto funkcia bude hľadať Element s id, ktoré obsahuje reťazec prispevok. Následne vyhľadá nejaké pole(v našom prípade textarea) kam bude vkladať smajlíkov. To sa bude volať obsah, čiže to bude meno tagu <textarea>. Hodnotu do formuláru budeme volať pomocou odkazu ako napr.
<a href="javascript:(':-)')" title=":-)">smajlík</a>
Ako vidíte hodnota podľa odkazu, ktorú sa pokúsime vložiť bude :-). Hodnota sa pripočíta k obsahu formuláru. Čiže si všímame kód obsah.value + data. Znamená to, že ak obsah má hodnotu povedzme "píšem príspevok" a použijeme javascriptový odkaz, tak sa nám k obsah-u pridá text ":-)". Výsledok bude vyzerať takto - "píšem príspevok:-)".

A čo HTML kód?

HTML kód bude teraz výstup, pomocou ktorého využijeme javascript. Ide v podstate len o príklad čiže obrázky smajlíkov si vložte do formláru podľa seba. Ja som odkázal na tie ktoré mám v redakčnom systéme implementované.
<form id="prispevok" action="" method="post">

	<fieldset>

		<legend>Formulár pre smajlíkov</legend>

		<label for="autor">Autor</label>

	<br /><input id="autor" name="autor" type="text" />

	<br /><strong>Smajlíci</strong>

	<br /><a href="javascript:add(':-)')" title="úsmev"><img
	src="http://www.pabi3.com/layout/smiles/04.gif" alt=":-)" /></a>
<a
	href="javascript:add(':-D')" title="veľký smiech"><img
	src="http://www.pabi3.com/layout/smiles/03.gif" alt=":-D" /></a>
<a
	href="javascript:add(':-(')" title="smútok"><img
	src="http://www.pabi3.com/layout/smiles/12.gif" alt=":-(" /></a>

	<br /><label for="obsah">Obsah</label>

	<br /><textarea id="obsah" name="obsah"></textarea>

	<br /><input name="odoslat" type="submit" value="Odoslať" />
<input type="reset"
	value="Obnoviť pole" />
</fieldset>

</form>
Ak zahrniete javascriptový súbor k tomuto HTML kódu a kliknete na smajlíka určite sa vloží do formuláru(konkrétne do tagu textarea). Jediné na čo už formulár čaká je opracovanie ale to už nieje cieľom článku. Smajlík je vložený fo formuláru pomocou javascriptu a tým to končí :-).

Záver

Ako som už naznačil bude lepšie keď smajíka aj opracujete po odoslaní. Najlepšíe bude, ak napr. pomcou PHP budete v texte meniť reťazce ako :-) pomcou funkcie Str_Replace() na reťazce typu <img src="images/smiles/...
To už ale v inom článku. Hotový príklad nájdete tu. Nebojte sa toho formuláru lebo je trochu naštýlovaný pomocou CSS aby lepšie vyzeral ;-).
Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 01.10.2005 17:48

Komentáre

#1 PVD E-mail
00.00.0000 00:00
Nedávno jsem zrovna to samé řešil a měl jsme to celkem hned, jelikož JS mi vzdálené není.Mám asi jen jednu připomínku k článku:co vím a co mám odzkoušené, tak tag javascript s src odkazem na externí soubor NEMUSÍ být mezi tagy <head>. A já osobně myslím, že krátké scripty rovnou do kódu a pokud externí, tak po malých částech, ať vždy nemusím načítat všechny kódy. (velká výhoda jmenovat si *.js podle názvu fce)No a k dodatku článku, myslím, že je lepší převést textové smajlíky na obrázkové až při zobrazování (načítání z db) než při zápisu, ušetří se pár bajtů v db (ale nevím, jestli se třeba déle nenačítá)

#2 admin Web E-mail
00.00.0000 00:00
admin No hopla, to už mám s tých meta-tagov taký blbý zvyk dávať všetko do <head>. Samozrejme je pravda, že nemusí byť v <head>.

Čo sa týka názvu súboru je to naozaj výhodnejšie ale myslím, že je to vec každého z nás ako si to pomenuje. Väčšinou ide o to ako to vyhovuje vývojárovi [laugh].

Ja som v článku písal iba o tom ako ich vkladať po kliknutí na nich do <textarea>. Ja to mám urobené aj na tomto fóre, tak že pokiaľ nájde v <textarea> text :-) potom ho zmení na text <img src='obrazok.gif... a uloží ho do databázy. Na konci som sa zmienil o tom, že zobrazovať ich môžeme pomocou funkcie Str_Replace() v php po nájdení značky smajlíka v texte. Je to tiež jeden zo spôsobov ale ja som len uvádzal tip . Predsa to tak nemusí každý robiť. Ale myslím, že máš pravdu je to lepší spôsob zobrazovania [wink].

#3 PVD E-mail
00.00.0000 00:00
Jasně, je to na každém zvlášť [laugh].
No každý to robíme po svém, ale o tom článek doopravdy není. To zkladní je popsáno a dobře srozumitelně, takže myslím, že opravdu pěkný článek.. ;-)

#4 admin Web E-mail
00.00.0000 00:00
admin Jasné dík [laugh].

#5 Blubo
00.00.0000 00:00
Mna by zaujimala ina vec. Ako urobit nahradenie mena prispievatela v tomto fore obrazkom?

#6 admin Web E-mail
00.00.0000 00:00
admin No pre koho sa ti zdá, že je ten personalizačný blok? Pod ním je odkaz na registráciu?

#7 Bulbo
00.00.0000 00:00
Ja som myslel, vo fore, ktore bolo vytvorene mnou pomocou navodu, ktory tu bol uverejneny.

#8 admin Web E-mail
00.00.0000 00:00
admin Písal si v tomto fóre - ako má človek vedieť, ktoré si myslel [amazed] ?

Je trochu rozdiel medzi fórom, ktoré sa robilo v seriály a mezdi týmto fórom. Toto je trochu iné fórum - "lepšie" [laugh].

No stačí trochu hľadať na internete funkcie ako Str_Replace() a pod. Ďalej sa treba naučiť sessions alebo cookies. Skôr by som odporúčal sessions [wink].

#9 Bulbo
00.00.0000 00:00
Ok. Radsej to necham tak [laugh].

#10 igi Web E-mail
17.12.2005 23:03
grrr.... toto jasny pripad ako robit jednoduche veci komplikovane....
ved funguje aj toto:

<img style="cursor:hand" src="http://www.pabi3.com/layout/smiles/04.gif" alt=":-)" onclick="document.formular.obsah.value+=' :-) '" />


form treba priradit parameter name="formular"

#11 admin Web E-mail
26.12.2005 19:23
admin grrr ...toto je jasný prípad ako robiť veci neprehľadne a mimo režimu platných štadnardov.

Vo formulári totižto nemá čo hľadať atribút name.

Či to už človek urobí cez jednoduchú funkciu alebo cez škaredý dlhý zápis do validného XHTML kódu je predsa jedno... [shy]

#12 maly_pitbul E-mail
11.07.2006 10:04
[question] prosim ta PaBi3, kde si sa docital ze vo formulari sa nema pouzit atribut name????
mas celkom slusnu stranku ale nezavadzaj tu zbytocne ludi.
pozri si dokumentaciu k html tagom kdekolvek na nete
napr. na http://www.w3schools.com/tags/tag_form.asp.
igiho zapis je ovela jednoduhsi. milujem komplikatorov.

#13 admin Web E-mail
11.07.2006 21:11
admin Prečítaj si odstavec 4.10.
http://www.w3.org/TR/xhtml1/#h-4.10

Validátor mi v dobe písania článku vykazoval chybu pre tento zápis v jazyku [strong]XHTML 1.1[strong].

#14 m-> 29 Web E-mail
14.02.2008 12:16
Nom... pekná stránka, fakt ale tu by som chcel povedať, že som nedávno podobné záležitosti pridával do mojej knihy návštev a v Opere sa po pridaní smajlíka presunie kurzor na začiatok príspevku a ak je príspevok dlhší ako výška textarea tak sa odroluje na žačiatok čo môže miesť. Človek, ktorý píše a nevšíma si čo a kam by mohol po pridaní smajlíka písať pokračovanie textu od začiatku. Skúšal som niečo aby to šlapalo ale fakt mi to moc nešlo tak bych ťa rád poprosil o nejakú radu. Dík

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti