Segue uma função para resolver este problema, não lembro de onde peguei ela :/, mas é bem útil, ela mantém o cursor no devido lugar:
function getSelectionStart(o) {Uso:
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart
}
function setCaretTo(obj, pos) {
if(obj.createTextRange) {
/* Create a TextRange, set the internal pointer to
a specified position and show the cursor at this
position
*/
var range = obj.createTextRange();
range.move("character", pos);
range.select();
} else if(obj.selectionStart) {
/* Gecko is a little bit shorter on that. Simply
focus the element and set the selection to a
specified position
*/
// obj.focus();
obj.setSelectionRange(pos, pos);
}
}
onkeyup="javascript:AlgumaFunctionOnKeyUpOuOutroEvento(this);"
function AlgumaFunctionOnKeyUpOuOutroEvento ()
{
x=getSelectionStart(campo);
y = campo.value.length
// Processamento de algo
x = x + campo.value.length - y
setCaretTo(campo,x)
}
Nenhum comentário:
Postar um comentário