Kod
function wstawtag(txtarea, tagOpen, tagClose, sampleText)
{
// IE
if(document.selection && !is_gecko)
{
var theSelection = document.selection.createRange().text;
if(!theSelection)
{
theSelection=sampleText;
}
txtarea.focus();
if(theSelection.charAt(theSelection.length - 1) == \" \")
{
// exclude ending space char, if any
theSelection = theSelection.substring(0, theSelection.length - 1);
document.selection.createRange().text = tagOpen + theSelection + tagClose + \" \";
}
else
{
document.selection.createRange().text = tagOpen + theSelection + tagClose;
}
// Mozilla
}
else if(txtarea.selectionStart || txtarea.selectionStart == '0')
{
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
if(endPos-startPos) replaced=true;
var scrollTop=txtarea.scrollTop;
var myText = (txtarea.value).substring(startPos, endPos);
if(!myText)
{
myText=sampleText;
}
if(myText.charAt(myText.length - 1) == \" \")
{
// exclude ending space char, if any
subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + \" \";
}
else
{
subst = tagOpen + myText + tagClose;
}
txtarea.value = txtarea.value.substring(0, startPos) + subst +
txtarea.value.substring(endPos, txtarea.value.length);
txtarea.focus();
//set new selection
if(replaced)
{
var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
txtarea.selectionStart=cPos;
txtarea.selectionEnd=cPos;
}
else
{
txtarea.selectionStart=startPos+tagOpen.length;
txtarea.selectionEnd=startPos+tagOpen.length+myText.length;
}
txtarea.scrollTop=scrollTop;
}
// reposition cursor if possible
if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
}
{
// IE
if(document.selection && !is_gecko)
{
var theSelection = document.selection.createRange().text;
if(!theSelection)
{
theSelection=sampleText;
}
txtarea.focus();
if(theSelection.charAt(theSelection.length - 1) == \" \")
{
// exclude ending space char, if any
theSelection = theSelection.substring(0, theSelection.length - 1);
document.selection.createRange().text = tagOpen + theSelection + tagClose + \" \";
}
else
{
document.selection.createRange().text = tagOpen + theSelection + tagClose;
}
// Mozilla
}
else if(txtarea.selectionStart || txtarea.selectionStart == '0')
{
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
if(endPos-startPos) replaced=true;
var scrollTop=txtarea.scrollTop;
var myText = (txtarea.value).substring(startPos, endPos);
if(!myText)
{
myText=sampleText;
}
if(myText.charAt(myText.length - 1) == \" \")
{
// exclude ending space char, if any
subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + \" \";
}
else
{
subst = tagOpen + myText + tagClose;
}
txtarea.value = txtarea.value.substring(0, startPos) + subst +
txtarea.value.substring(endPos, txtarea.value.length);
txtarea.focus();
//set new selection
if(replaced)
{
var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
txtarea.selectionStart=cPos;
txtarea.selectionEnd=cPos;
}
else
{
txtarea.selectionStart=startPos+tagOpen.length;
txtarea.selectionEnd=startPos+tagOpen.length+myText.length;
}
txtarea.scrollTop=scrollTop;
}
// reposition cursor if possible
if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
}
problem 1.
wywoluje skrypt tak
Kod
<select size=\"1\" name=\"kolor\">
<option value=\"kasztanowy\" style=\"background-color: #800000\" onclick=\"wstawtag(x.tresc, \"[kolor]\",\"[/kolor]\",\"\");\">Kasztanowy</option>
...
<option value=\"kasztanowy\" style=\"background-color: #800000\" onclick=\"wstawtag(x.tresc, \"[kolor]\",\"[/kolor]\",\"\");\">Kasztanowy</option>
...
no i pod ie wogule niedziala ... a pod FF jak najbardziej

problem 2.
wywoluje tak
Kod
<input type=\"button\" value=\"[ b ]\" onclick=\"wstawtag(x.tresc, \"[b]\",\"[/b]\",\"\");\">
pod FF dziala przepieknie, wstawia tagi do pola, i cudnie umieszcza karete (kursor), pomiedzy dwoma tagami. Ie natomiast opornie wstawia tagi, i karete wywala za ostatni tag !