Vkládáníé smajlíků do textu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vkládáníé smajlíků do textu – JavaScript, AJAX, jQuery – Fórum – Programujte.comVkládáníé smajlíků do textu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
jara
~ Anonymní uživatel
24 příspěvků
19. 2. 2008   #1
-
0
-

vkladam do textaree smajlíky.
Vse jede v pohode jen ve Firefoxu (IE a Opera nevkladaji)
Vse se deje tak, ze mam pod textareou obrázky smajlíků a kdyz na nektery kliknu, tak se vloží do textaree.
Bohužel IE a Opera tak neučiní.
V hlavičce stránky mám uveden tento script:

<script language="javascript" type="text/javascript">

<!--
function smajlik(text) {
if (document.formular.textarea.createTextRange && document.formular.textarea.caretPos)
{
var caretPos = document.formular.textarea.caretPos;
caretPos.text = caretPos.textarea.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else
document.formular.textarea.value += text;
document.formular.textarea.focus(caretPos)
}

//-->
</script>


a tímto vkládám jednotlivé smajly do textu (kdyz na jednotlivy obrazek kliknu, vlozi se jeho znak do textu)
<a href="javascript:smajlik(':-)')"><img src="smiles/01.gif" border="0" /></a>

<a href="javascript:smajlik(':-P')"><img src="smiles/02.gif" border="0" /></a>
<a href="javascript:smajlik('8-)')"><img src="smiles/03.gif" border="0" /></a>
<a href="javascript:smajlik(';-)')"><img src="smiles/04.gif" border="0" /></a>
<a href="javascript:smajlik(':)')"><img src="smiles/05.gif" border="0" /></a>


Prosím, nevite v cem by mohla byt chyba?
Je to divný, kdyz Firefox to udela a IE a Opera nikoliv...
Diky za jakykoliv tip:)

Nahlásit jako SPAM
IP: 213.211.55.–
Reklama
Reklama
toka0
Stálý člen
20. 2. 2008   #2
-
0
-

Pouzivam toto, je to tedy rozsahlejsi kod, ale funguje vsude:



// http://www.alexking.org - LGPL
function insertAtCursor(myField, prefix, postfix) {
var re = new RegExp("^(.*\\S)(\\s*)$");
myField.focus();
//IE support
if (document.selection) {
sel = document.selection.createRange();
var selection = sel.text;
var wasEmpty = (selection == "");
var space = "";
if (!wasEmpty) {
var matches = selection.match(re);
if (matches) {
selection = RegExp.$1;
space = RegExp.$2;
}
}
sel.text = prefix+selection+postfix+space;
sel.collapse(false);
if (wasEmpty) {
sel.moveEnd('character',-(prefix.length+1))
}
sel.select();
}
//MOZILLA/NETSCAPE support
else {
if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
var selection = myField.value.substring(startPos, endPos);
var wasEmpty = (startPos == endPos);
var space = "";
if (!wasEmpty) {
var matches = selection.match(re);
if (matches) {
selection = RegExp.$1;
space = RegExp.$2;
}
}
myField.value = myField.value.substring(0, startPos)
+ prefix+selection+postfix+space
+ myField.value.substring(endPos, myField.value.length);

var newPosition;
if (wasEmpty) {
newPosition = startPos+prefix.length;
} else {
newPosition = startPos+prefix.length+selection.length+postfix.length+space.length;
}
myField.setSelectionRange(newPosition, newPosition);
} else {
myField.value += prefix+postfix;
myField.setSelectionRange(startPos+prefix.length, startPos+prefix.length);
}
}
}


A pak bys to volal asi takto:
<a href="javascript:insertAtCursor(document.form.content, ':-)', '');">:-)</a>


Vyhodou tohoto velkeho kodu je to, ze se smajlik vzdy vlozi na pozici kurzor, nikoliv pouze na konec textarea.

Jinak tvuj kod bych upravil na pouziti getElementById a pak mi to jde vsude.


function smajlik(text) {
var textfield = document.getElementById('foo');
if (textfield.createTextRange && textfield.caretPos) {
var caretPos = textfield.caretPos;
caretPos.text = caretPos.textarea.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
} else textfield.value += text;
textfield.focus(caretPos)
}


Misto foo si dopln tvoje id u textarea, nebo bys to mohl predavat parametrem.

Nahlásit jako SPAM
IP: 86.61.165.–
Tomáš Kavalek
jara
~ Anonymní uživatel
24 příspěvků
20. 2. 2008   #3
-
0
-

smajliky chci vkladat do formulare (name="formular") a do textaree, ktera je ve formulari (name="textarea")
nejak se v tom nemuzu zorientovat...

Nahlásit jako SPAM
IP: 213.211.55.–
toka0
Stálý člen
20. 2. 2008   #4
-
0
-

No, on ten pristup pres teckovou notaci se me nikdy moc nelibil. Proste si do tagu textarea pridej parametr id, napr. takto:

<textarea id="textove_pole" ...>
a pak si uz jen do te tve funkce misto
var textfield = document.getElementById('foo');

das
var textfield = document.getElementById('textove_pole');

Nahlásit jako SPAM
IP: 86.61.149.–
Tomáš Kavalek
toka0
Stálý člen
20. 2. 2008   #5
-
0
-

Alternativne jeste muzes pouzit funkci getElementByName. Chce to trosku googlit, nebo si najit nejaky JS manual, no ;-)

Nahlásit jako SPAM
IP: 86.61.149.–
Tomáš Kavalek
toka0
Stálý člen
20. 2. 2008   #6
-
0
-

Nejak me ted v servisu na MSIE nejde edit, takze znovu, pak to sjednotim z kancelare. Pokud chces pouzit ted "delsi" skript, tak s temi tvymi name to udelas takto:

<a href="javascript:insertAtCursor(document.formular.textarea, ':-)', '');">:-)</a>


Nejsem si vsak moc jisty tim, zda-li muze byt name shodne s tagem.

Nahlásit jako SPAM
IP: 86.61.149.–
Tomáš Kavalek
jara
~ Anonymní uživatel
24 příspěvků
20. 2. 2008   #7
-
0
-

tak jsem zkousel vse podle navodu, nefakčí...

id="textove_pole"
i
document.getElementById('textove_pole');
jsem zkoušel, ale bez výsledku
stačí mi jen kdyz to bude vkladat smajliky do textaree ve vsech prohlizecich. Zadny osetreni byt nemusi...

Nahlásit jako SPAM
IP: 213.211.55.–
toka0
Stálý člen
20. 2. 2008   #8
-
0
-

Mne to jede, neco delas spatne:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>JS</title>
<script language="javascript" type="text/javascript">
function smajlik(text) {
var textfield = document.getElementById('textfield');
if (textfield.createTextRange && textfield.caretPos)
{
var caretPos = textfield.caretPos;
caretPos.text = caretPos.textarea.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else
textfield.value += text;
textfield.focus(caretPos)
}
</script>
</head>
<body>
<textarea id="textfield"></textarea>

<a href="javascript:smajlik(':-)')">:-)</a>
<a href="javascript:smajlik(':-P')">:-P</a>
</body>
</html>

Nahlásit jako SPAM
IP: 86.61.165.–
Tomáš Kavalek
jara
~ Anonymní uživatel
24 příspěvků
20. 2. 2008   #9
-
0
-

jsem to zkousel primo v opere, dela to upe to same... Firefox smajlika vlozi, Opera a IE nikoliv...

Nahlásit jako SPAM
IP: 213.211.55.–
toka0
Stálý člen
20. 2. 2008   #10
-
0
-

Ted jsem ten kod zkousel znovu, a proste to funguje, jen MSIE na localu zada o povoleni ActiveX prvku.

Nahlásit jako SPAM
IP: 86.61.165.–
Tomáš Kavalek
jara
~ Anonymní uživatel
24 příspěvků
20. 2. 2008   #11
-
0
-

promin, mas pravdu, jede:)
chybu jsem delal v tom, ze jsem script

<script language="javascript" type="text/javascript">

function smajlik(text) {
var textfield = document.getElementById('textfield');
if (textfield.createTextRange && textfield.caretPos)
{
var caretPos = textfield.caretPos;
caretPos.text = caretPos.textarea.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else
textfield.value += text;
textfield.focus(caretPos)
}
</script>

daval do jednoho uvození JavaScriptu (<script language="javascript" type="text/javascript"><b>Sem jsem to dal spolu s jinym ale řádně ukončeným skriptem</b></script>
Asi se to hadalo...

Diky moc za pomoc!

Nahlásit jako SPAM
IP: 213.211.55.–
toka0
Stálý člen
20. 2. 2008   #12
-
0
-

Neni zac ;)

Nahlásit jako SPAM
IP: 86.61.165.–
Tomáš Kavalek
cheeester0
Stálý člen
6. 3. 2008   #13
-
0
-

chci se zeptat ještě jak se dělá když chci pak zase ten symbol :-) dekodovat na obrázek v tom textu? Připadně chci vložit [.b][./b] jak toto převedu na <b></b> v textu? Moc se mi zamlouvá tento formulář tady na programujte.cz :smile1:

Nahlásit jako SPAM
IP: 88.146.167.–
schimpanze0
Návštěvník
7. 4. 2008   #14
-
0
-

takře touto funkcí lze do Textarea vkládat jakýkoliv řetězec, že ano?

Nahlásit jako SPAM
IP: 194.108.206.–
Nejlepší způsob jak se připravit na budoucnost je, vymyslet si jí.
Pinqui0
Duch
23. 2. 2009   #15
-
0
-

Chci se zeptat, když bych měl smajlíki ve frame např name1 a formulář ve frame name2 jak to udělám, aby to fungovalo?? děkuji

Nahlásit jako SPAM
IP: 213.235.168.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Podobná vlákna

Vkladanie bbCodu — založil devilfish

Vkladanie do ScrolledText — založil kylexy

Vkladanie do databázy — založil Peter

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý