Nein, gibt es nicht. IE hat seine TextRange
Objekte, um die Aufgabe zu erledigen. IE> = 9 und alles andere für die letzte lange Zeit hat selectionStart
und selectionEnd
Eigenschaften auf Textareas und Texteingaben. Diese besondere Aufgabe ist es nicht so schlecht: Im Folgenden wird die aktuelle Auswahl löschen (falls vorhanden), Einfügen von Text an der Caret und neu zu positionieren die Einfügemarke unmittelbar nach dem Text eingefügt, in allen gängigen Browsern:
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();
}
}
Dank sehr, dachte, dass Browser in den letzten Jahren vielleicht weitergegangen sind, aber offensichtlich wählt IE immer noch, anders zu sein. – richw81
Die gute Nachricht ist, dass IE 9 'selectionStart' und' selectionEnd' hat. –
Dies funktionierte hervorragend für meine Implementierung in allen drei Browsern, das einzige Problem, das ich hatte, war ausgewählter Text zu ersetzen. Wenn ich val.slice (0, endIndex) durch val.slice (0, startIndex) ersetzt habe, gab es die Funktion, eine Auswahl hervorzuheben und durch den hinzugefügten Text zu ersetzen. Nur für andere, die die gleiche Funktionalität brauchten wie ich. – SomeoneRandom