Autor Zpráva
flying gentleman
Profil
ahojte,
potreboval bych udelat presne to, co tady na diskuzi v u toho formu na zalozeni tematu.
kliknu na B a vlozi se [b][/b]. studoval jsem kod, nasel jsem tu js konstrukci, ale vubec jsem ji nepochopil.
mohl by mi to nekdo napsat?
shrnu to:proste po kliknuti na odkaz potrebuju aby se do textarea vlozila hodnota toho odkazu, treba <abbr></abbr> nebo <p> </p> a tak vselijak podobne.
vopred dakujem:)
Fred
Profil
<style type="text/css"><!--
#ovladace{display:none;}
--></style>
<script type="text/javascript">
var d=document;
function tarea(startTag,endTag) {
var txt=d.getElementById('txt');
if(d.selection){//ie
sel=d.selection.createRange();
sel.text=startTag+sel.text+endTag;}
else if(txt.selectionStart||txt.selectionStart=='0'){//gecko
var zac=txt.selectionStart;
var kon=txt.selectionEnd;
txt.value=txt.value.substring(0,zac)
+startTag
+txt.value.substring(zac,kon)
+endTag
+txt.value.substring(kon,txt.value.length);
txt.selectionStart=zac+startTag.length;
txt.selectionEnd=kon+startTag.length;}
else{txt.value+=myValue;}
txt.focus();}
function init(){
var kde=d.getElementById('ovladace');
kde.style.display='block';
var hrefy=kde.getElementsByTagName('a');
for(i=0,j=0;i<hrefy.length;i++){
hrefy[i].onclick=function(){
tarea('['+this.getAttribute('title')+']','[/'+this.getAttribute('title ')+']');
return false;}}}

function wysiwyg(){
d.getElementById('txt').onchange=function(){
var vstup=d.getElementById('txt').value;
vstup=vstup.replace(new RegExp("[\[]","g"), "<");
vstup=vstup.replace(new RegExp("[\]]","g"), ">");
d.getElementById('vystup').innerHTML=vstup;
}
}
function addEvent(obj,evType,fn){
if(obj.addEventListener){obj.addEventListener(evType,fn,true);return true;}
else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r;}
else{return false;}
}

addEvent(window,'load',init); //addEvent:thx http://www.scottandrew.com/weblog/articles/cbs-events
addEvent(window,'load',wysiwyg);

</script>
</head>
<body>

<textarea id="txt"></textarea>
<div id="ovladace">
<a href="#" title="strong">strong</a>
<a href="#" title="em">em</a>
<a href="#" title="p">p</a>
</div>
<div id="vystup"></div>
flying gentleman
Profil
Fred:pokud si to pustis minimalne ve ff, uvidis, ze to funguje jen napul, vklada to totiz treba jen [strong][/null]
flying gentleman
Profil
a sorry, uz je to v poho, byla tam totiz jedna mezera mezi slovem a apostrofem navic,diky moc
flying gentleman
Profil
jo a hele, jak udelat, aby to vkladalo rovnou
<strong></strong>
misto [strong][/strong]???
flying gentleman
Profil
tak na to uz jsem prisel, a ted by me zajimalo, jestli tam jsou jeste k necemu tyhle dva radky:
vstup=vstup.replace(new RegExp("[\[]","g"), "<");
vstup=vstup.replace(new RegExp("[\]]","g"), ">");

????
kdyz uz rovnou vkladam < a >
peta
Profil *
flying gentleman
Ty 2 radky jsou pak na nic. Slouzili pro nahrazeni <> za []
navic existuji metody .strong, ktere primo ty tagy generuji
flying gentleman
Profil
metody .strong
co to je?
flying gentleman
Profil
haha, ale problem nastava, kdybych takhle chtel vkladat nejaky tag, ktery ma dejme tomu atribut title nebo href, protoze pokuid vkladam
<a href="">
tak mi z toho vyleze

<a href=""></a href="">
Fred
Profil
Mrkni se na původní zdroj http://cvs.sourceforge.net/viewcvs.py/cafelog/wordpress/wp-admin/quick tags.js?rev=1.10&view=auto
flying gentleman
Profil
Fred: diky za ten link, ale nema to cenu, protoze javascriptu rozumim jak moje mrtva babicka internetu:(
peta
Profil *
flying gentleman
tak pouzivej entity pro zobrazeni mimo textarea > &gt; < &lt;
Spike
Profil
function insertAtCursor(obj,val) {

var o = document.getElementById(obj);
o.focus();
if (document.selection) {
sel = document.selection.createRange();
sel.text = val;
}
else if (o.selectionStart || o.selectionStart == '0') {
var startPos = o.selectionStart;
var endPos = o.selectionEnd;
o.value = o.value.substring(0,startPos) + val + o.value.substring(endPos, o.value.length);
}
else {
o.value += val;
}
}

function insertAroundSelection(obj,startVal,endVal) {
var o = document.getElementById(x);
o.focus();
if (document.selection) {
sel = document.selection.createRange();
var selText = sel.text;
sel.text = startVal + selText + endVal;
}
else if (o.selectionStart || o.selectionStart == '0') {
var startPos = o.selectionStart;
var endPos = o.selectionEnd;
o.value = o.value.substring(0,startPos) + startVal + o.value.substring(startPos,endPos) + endVal + o.value.substring(endPos,o.value.length);
}
else {
o.value += startVal + endVal;
}
}


První funkce je určena pro vkládání nepárového tagu přesně na pozici kursoru.

Druhá funkce vloží párové tagy kolem označeného textu.

Oproti tomuto fóru to výhodu v tom, že ty tagy to nevkládá na konec textu (aspoň v mém Firefoxu)
Mám to odzkoušeno skoro ve všech prohlížečích (IE, Mozilla, Opera, Safari)
Fred
Profil
Vždyť je to ten kód z toho odkazu http://www.alexking.org/blog/2003/06/02/inserting-at-the-cursor-using- javascript/
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=8&topic=16 31
Spike
Profil
Fred: Ano, ten zdroj jsem pouzil, ale pridal jsem jeste funkci insertAroundSelection, ktera vlozi párové značky kolem označeného textu. Používám to už dlouho, ani jsem si nevšiml, že jsi sem dal ten link.
Mythos
Profil *
At uz je ten kod odkudkoliv, kazdopadne mi moc pomohl takze za nej dekuji. Jenom u u toho tveho Spiku pouzivaz uvnitr fce insertAroundSelection parametr x ktery neni definovany, predpokladam ze tam melo byt obj, to jenom kdyby nekomu ta fce nefungovala.
Anonymní
Profil *
vite jak to volat validne?

<a onclick="insertAtCursor('neco','<img>')">kli</a>

pokud bych chtel

<a onclick="insertAtCursor('neco','<img src="">')">kli</a>

pise to error, poradte jak na to.
DeaLer
Profil *
Spike
zkouším kód, který se tu objevil, ale asi dělám něco špatně. Zajímalo by mě co mám kde upravit?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript">
function insertAtCursor(obj,val)
{
var o = document.getElementById(obj);
o.focus();
if (document.selection)
{
sel = document.selection.createRange();
sel.text = val;
}
else if (o.selectionStart || o.selectionStart == '0')
{
var startPos = o.selectionStart;
var endPos = o.selectionEnd;
o.value = o.value.substring(0,startPos) + val + o.value.substring(endPos, o.value.length);
}
else
{
o.value += val;
}
}

function insertAroundSelection(obj,startVal,endVal)
{
var o = document.getElementById(obj);
o.focus();
if (document.selection)
{
sel = document.selection.createRange();
var selText = sel.text;
sel.text = startVal + selText + endVal;
}
else if (o.selectionStart || o.selectionStart == '0')
{
var startPos = o.selectionStart;
var endPos = o.selectionEnd;
o.value = o.value.substring(0,startPos) + startVal + o.value.substring(startPos,endPos) + endVal + o.value.substring(endPos,o.value.length);
}
else
{
o.value += startVal + endVal;
}
}
</script>
</head>

<body>
<form action="" method="post" name="form">
<input name="" type="button" onclick="insertAroundSelection(document.form.text,,);" />
<textarea name="text" id="text" cols="" rows=""></textarea>
</form>
</body>
</html>
peta
Profil *
DeaLer
Jaky kod pouziva toto forum? zobrazit - zdrojovy kod...
To je presne ten kod, ktery se tu objevil, jak rikas. On tu proste vzdycky byl...

http://peter-mlich.wz.cz/x/ed1.htm
DeaLer
Profil *
Včera po několika hodinách přišel na chybu.
Zbynda
Profil *
a kde tza chyba je? nechces ji napsat ?
Triska
Profil *
rekl bych ze ta chyba je ve spatne definovanem name a id u textarea
Toto téma je uzamčeno. Odpověď nelze zaslat.