No, non c'è. IE ha gli oggetti TextRange
per fare il lavoro. IE> = 9 e tutto il resto dell'ultimo periodo di tempo ha le proprietà selectionStart
e selectionEnd
su testo e input di testo. Questo compito particolare, non è male: il seguente sarà eliminare la selezione corrente (se ne esiste uno), inserire il testo al punto di inserimento e riposizionare il cursore immediatamente dopo il testo inserito, in tutti i principali browser:
function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
endIndex = el.selectionEnd;
el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
el.focus();
range = document.selection.createRange();
range.collapse(false);
range.text = text;
range.select();
}
}
fonte
2010-07-22 11:57:54
Grazie molto, ho pensato che i browser avrebbero potuto andare avanti negli ultimi anni, ma ovviamente IE sta ancora scegliendo di essere diverso. – richw81
La buona notizia è che IE 9 ha 'selectionStart' e' selectionEnd'. –
Questo ha funzionato alla grande per la mia implementazione in tutti e tre i browser, l'unico problema che avevo era la sostituzione del testo selezionato. Se ho sostituito val.slice (0, endIndex) con val.slice (0, startIndex) ha dato la funzionalità di evidenziare una selezione e di sostituirla con il testo aggiunto. Solo per gli altri che avevano bisogno della stessa funzionalità che ho fatto. – SomeoneRandom