javascript

mam js, ktery mi vypisuje smajliky do textarea, ale tenhlereaguje jenom na name, ale podle standartu xhtml 1.1 name se nepouziva, jak to pls upravit aby to reagovalo misto na name na id?

<!--
function smajlik(text) {
if (document.form.vzkaz.createTextRange &&
document.form.vzkaz.caretPos) {
var caretPos = document.form.vzkaz.caretPos;

caretPos.text =
caretPos.vzkaz.charAt(caretPos.text.length - 1)
== ' ' ?
text + ' ' : text;
}
else document.form.vzkaz.value += text;
document.form.vzkaz.focus(caretPos)
}
//-->

thanx
V objektovym modelu JS se fakt moc nevyznam. Co getelementbyid()?
Snáď takto (píšem z hlavy):

function smajlik(text) {
var vzkaz = document.getElementById ('vzkaz'); // za predpokladu, ze ten element s menom vzkaz ma aj id vzkaz
if (vzkaz.createTextRange && vzkaz.caretPos) {
var caretPos = vzkaz.caretPos;
caretPos.text = caretPos.vzkaz.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text; // caretPos.vzkaz? no ak to nastavujes niekde v inej funkcii, tak potom nic
}
else vzkaz.value += text;
vzkaz.focus(caretPos); // focus potrebuje nejaky argument? (nepotrebuje)
}

TextRange funguje iba v IE, ale to asi vieš. V iných prehliadačoch sa používa element.selectionStart a element.selectionEnd na zistenie pozície kurzora.
kdyz jsem resil vkladani smajliku po kliknuti na ikonku, po nejaky dobe jsem se na to vykaslal, protoze udelat skript, kterej by fachal ve vsech trech stejne, je nad lidsky sily (nebo rozhodne aspon ty moje). Tak jsem se rozhodl to udelat pomoci PHP, kdyz nahrazuju klasicky textovy smajliky obrazkama. Kod je asi takovy:

$replace_pairs = array(
":D" => "<img src='grafika/smile/01.gif' alt='obrazek :D' />",
":-D" => "<img src='grafika/smile/01.gif' alt='obrazek :-D' />",
":oD" => "<img src='grafika/smile/01.gif' alt='obrazek :oD' />",
":P" => "<img src='grafika/smile/02.gif' alt='obrazek :P' />",
":-P" => "<img src='grafika/smile/02.gif' alt='obrazek :-P' />",
":oP" => "<img src='grafika/smile/02.gif' alt='obrazek :oP' />",
";)" => "<img src='grafika/smile/04.gif' alt='obrazek ;)' />",
";-)" => "<img src='grafika/smile/04.gif' alt='obrazek ;-)' />",
";o)" => "<img src='grafika/smile/04.gif' alt='obrazek ;o)' />",
":)" => "<img src='grafika/smile/05.gif' alt='obrazek :)' />",
":-)" => "<img src='grafika/smile/05.gif' alt='obrazek :-)' />",
":o)" => "<img src='grafika/smile/05.gif' alt='obrazek :o)' />",
":|" => "<img src='grafika/smile/07.gif' alt='obrazek :|' />",
":-|" => "<img src='grafika/smile/07.gif' alt='obrazek :|' />",
":o|" => "<img src='grafika/smile/07.gif' alt='obrazek :|' />",
"X(" => "<img src='grafika/smile/11.gif' alt='obrazek X(' />",
"X-(" => "<img src='grafika/smile/11.gif' alt='obrazek X-(' />",
"Xo(" => "<img src='grafika/smile/11.gif' alt='obrazek Xo(' />",
"(l)" => "<img src='grafika/smile/16.gif' alt='obrazek (l)' />",
":(" => "<img src='grafika/smile/17.gif' alt='obrazek :(' />",
":-(" => "<img src='grafika/smile/17.gif' alt='obrazek :-(' />",
":o(" => "<img src='grafika/smile/17.gif' alt='obrazek :o(' />"
);
$text = strtr($text, $replace_pairs);

Funguje to k me spokojenosti a ne*eru se s zadnym JS :D
me se str_replace nechce pouzivta, kdysi jsem to tak delal ale pro "neznalky" - hlavne formatovani textu to davam pres js
O str_replace nepadlo ani slovo...?...ja se zase snazim nepouzivat JS, ze znamych duvodu.
me se s tim php nechce parat... ale co nejdriv se to pokusim udelat pomoci php - nahradit ten js php - coz de ;-)
Thelvyn:
>tenhlereaguje jenom na name, ale podle standartu xhtml 1.1 name se nepouziva
name byl zrušen jenom u <a> a <map>, jak jsem nedávno zjistil
Atribut name a XHTML 1.1>
Je uveden u input, select, textarea, button, object, param, meta
Je deprecated u form, img, a, map, applet, frame, iframe
V tomto prípade je jedno, že name je v HTML povolený - takýto prístup cez name (document.form.vzkaz) je v JavaScripte trošku zastaralý, je lepšie používať getElementById.
V php sa samozrejme musí reťazec ':-)' nahradiť za '<img src="..." />', snáď nevkladáš do textarey text '<img src="..." />'. JavaScript iba zjednoduší vkladanie smajlíkov, ktorých je stále možné zapísať textovo.
to bylo jen pro informaci. ;)
to Donny

Javascript je v podstatě céčko! Takže ne getelementbyid() ale getElementById(). Záleží na velikosti písmen!
byl to jen tip, ne presna odpoved...fakt me nebavi tolikrat mackat shift...