function getCursorPos (elm)
{
switch (elm.nodeName.toLowerCase ())
{
case "textarea":
return getCursorPosTextarea (elm);
case "input":
return getCursorPosInput (elm);
}
return {begin: null, end: null};
}
function getCursorPosInput (elm)
{
if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined")
return {begin: elm.selectionStart, end: elm.selectionEnd};
if (document.selection && document.selection.createRange)
{
elm.focus ();
var selRange = document.selection.createRange ().duplicate ();
// check if element contains selected text
if (selRange.parentElement () != elm)
return {begin: "n/a", end: "n/a"};
var range = elm.createTextRange ().duplicate ();
//if (!range.inRange (selRange))
// return {begin: "n/a", end: "n/a"};
range.setEndPoint ("EndToStart", selRange);
return {begin: range.text.length, end: range.text.length + selRange.text.length};
}
return {begin: null, end: null};
}
function getCursorPosTextarea (elm)
{
if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined")
return {begin: elm.selectionStart, end: elm.selectionEnd};
if (document.selection && document.selection.createRange)
{
elm.focus ();
var selRange = document.selection.createRange ().duplicate ();
// check if element contains selected text
if (selRange.parentElement () != elm)
return {begin: "n/a", end: "n/a"};
var range = selRange.duplicate ();
range.moveToElementText (elm);
//if (!range.inRange (selRange))
// return {begin: "n/a", end: "n/a"};
range.setEndPoint ("EndToStart", selRange);
return {begin: range.text.length, end: range.text.length + selRange.text.length};
}
return {begin: null, end: null};
}
function getPos (el)
{
var cursor = getCursorPos (el);
document.getElementById ("pos").value = cursor.begin + ":" + cursor.end;
}
function setCursorPos (elm, begin, end)
{
if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined")
{
elm.setSelectionRange (begin, end);
elm.focus ();
}
else if (document.selection && document.selection.createRange)
{
var range = elm.createTextRange ();
range.move ("character", begin);
range.moveEnd ("character", end - begin);
range.select ();
}
}
function setPos (el, begin, end)
{
setCursorPos (el, begin, end);
}
<textarea cols="20" rows="3"
id="textarea"
onfocus="getPos(this)"
onmouseup="getPos(this)"
onclick="getPos(this)"
onkeyup="getPos(this)"
>blabla bla lorem ipsum bla blabla</textarea>
<input id="pos" type="text" readonly="readonly" /> - zde se mi zobrazuje pozice kurzoru, např. 5:5; 5:7.
Mohl by mi někdo poradit, jak toho využít právě k vložení nějakého tagu na to místo?