M@rtinMedlem sedan dec. 19991 214 inlägg
Hur får man fram markörens position i en textarea?
Med alla webbläsare utom Internet Explorer är det såklart enkelt:
textarea.selectionStart
Men i IE är det inte lika enkelt. Det här måste vara ett jättevanligt problem men google ger bara felaktiga svar. Finns lösningar som fungerar i en vanlig textruta men de funkar inte i en textarea.
Någon som vet?
MogMedlem sedan nov. 2003255 inlägg
Nåt sånt här du är ute efter?
function insertAtCursor(myField, txt)
{
// IE
if (document.selection && document.selection.createRange) {
// Hämta markering i rutan
myField.focus();
sel = document.selection.createRange();
// Om nåt är markerat
if (sel.text.length != 0) {
var str = sel.text;
}
else {
var str = txt;
}
sel.text = str;
}
else if (document.getSelection) {
var allTxt = myField;
var beginTxt = allTxt.value.substring(0, allTxt.selectionStart);
var endTxt = allTxt.value.substring(allTxt.selectionEnd, allTxt.value.length);
var selTxt = allTxt.value.substring(allTxt.selectionStart, allTxt.selectionEnd);
if (selTxt.length != 0) {
var str = selTxt;
}
else {
var str = txt;
}
myField.value = beginTxt + str + endTxt;
}
else {
myField.value = myField.value + txt;
}
}
Anropa med
onClick="insertAtCursor(document.getElementById('myField'),'textSomSkaInVidMarkören');"
M@rtinMedlem sedan dec. 19991 214 inlägg
Njae inte riktigt, men nu har jag löst det:
function getCaretPos(obj){
if(obj.selectionStart){
return obj.selectionStart;
}else if(document.selection && document.selection.createRange){
obj.focus();
var sel = document.selection.createRange();
var dup = sel.duplicate();
var c = "\001";
sel.text=c;
dup.moveToElementText(obj);
var pos = dup.text.indexOf(c);
sel.moveStart('character',-1);
sel.text="";
return pos;
}else{
return -1;
}
}
johaseoMedlem sedan maj 2009250 inlägg
aha ... problemet är löst? Perfekt .. markera gärna att denna tråd har en lösning ... ha det gott!