Zum Abrufen der ausgewählten Inhalte in a <textarea> mit Firefox:
function getSel() // JavaScript
{
// Obtain the object reference for the <textarea>
var txtarea = document.getElementById("mytextarea");
// Obtain the index of the first selected character
var start = txtarea.selectionStart;
// Obtain the index of the last selected character
var finish = txtarea.selectionEnd;
// Obtain the selected text
var sel = txtarea.value.substring(start, finish);
// Do something with the selected content
}
window.getSelection().toString() macht genau dasselbe, und Sie müssen die ID des Textbereichs nicht kennen. Sie können nicht gleichzeitig mehrere Auswahlen in verschiedenen Textbereichen haben.
– Dan Dascalescu
4. September 2015 um 11:24 Uhr
@DanDascalescu Das habe ich schon einmal versucht und jetzt. Es funktioniert mit Chrome, aber anscheinend nicht mit FireFox.
Tatsächlich gibt es einen Fehler in Firefox, der bereits 2001 (!) eingereicht wurde. Ich habe das in meiner Antwort erwähnt.
– Dan Dascalescu
5. September 2015 um 19:51 Uhr
Die Handhabung der Auswahl ist für verschiedene Browser unterschiedlich:
var userSelection;
if (window.getSelection) {
userSelection = window.getSelection();
}
else if (document.selection) { // Opera
userSelection = document.selection.createRange();
}
Das gibt Ihnen ein Bereichsobjekt. Jeder Bereich stellt eine einzelne Auswahl dar (mit der Steuerungs-/Befehlstaste ist es möglich, mehrere aktive Auswahlen zu treffen).
Die Art des Bereichsobjekts, das Sie jetzt haben, hängt davon ab, welchen Browser Sie verwenden. Für IE ist es ein Text Range-Objekt; für andere ist es ein Selection-Objekt. Um ein Selection-Objekt in einen Textbereich umzuwandeln, können Sie getRangeAt aufrufen; für Safari müssen Sie das erstellen:
var range;
if (userSelection.getRangeAt)
range = userSelection.getRangeAt(0);
else { // Safari
range = document.createRange();
range.setStart(userSelection .anchorNode, userSelection.anchorOffset);
range.setEnd(userSelection.focusNode, userSelection.focusOffset);
}
Das Range-Objekt stellt Ihnen die Start- und End-Dom-Elemente und den Text-Offset der Auswahl bereit.
Weitere Informationen zu Bereichsobjekten finden Sie unter quirksmode.org hier
Wenn Sie jQuery verwenden, sollten Sie sich die leichtes jQuery RTE-Plugin von Batiste Bieler. Es kann genug für Ihre Bedürfnisse sein oder Ihnen zumindest etwas für den Anfang geben.
Wie verwenden Sie diese Funktion auf eine bestimmte textarea Element ?
– Mischa Moroshko
25. August 2011 um 7:38 Uhr
Der obige Code funktioniert nicht im Firefox-Browser (61.0.1) @tpdi
– Lokesh S
13. Juli 2018 um 6:14 Uhr
Funktioniert der Link? Es leitet zu einer Anmeldeseite (für die meisten Leute).
– Peter Mortensen
vor 20 Stunden
eKek0
Probieren Sie das Plugin jquery-fieldselection aus.
Sie können es von herunterladen hier. Es gibt auch ein Beispiel.
Subin
Eine kleine Funktion, die den ausgewählten String/Text von a erhält Textbereich oder ein Eingang Element:
function getInputSelection(elem){
if(typeof elem != "undefined"){
s = elem[0].selectionStart;
e = elem[0].selectionEnd;
return elem.val().substring(s, e);
}
else{
return '';
}
}
Beachten Sie, dass der obige Code benötigt jQuery für die Arbeit. Ein Beispiel für das Abrufen der ausgewählten Zeichenfolge eines Eingabeelements mit ID abc123 ist:
getInputSelection($("#abc123"));
Die obige Funktion gibt die ausgewählte Zeichenfolge zurück. Wenn keine vom Benutzer ausgewählte Zeichenfolge vorhanden ist, wird sie zurückgegeben null.
Bei mit Klassennamen ausgewählten Elementen wird die ausgewählte Zeichenfolge des ersten Elements des Arrays von Elementen zurückgegeben und nicht die ausgewählte Zeichenfolge aller Elemente. Schließlich wird die Auswahl auf einer Seite immer sein 1.
Bitte zeigen Sie ein Beispiel.
– Sumner Evans
20. April 2014 um 4:29 Uhr
Ich mag die Möglichkeit, jedes Element in Ihre Funktion zu übergeben, es macht es viel tragbarer/wiederverwendbar.
– Sumner Evans
20. April 2014 um 14:59 Uhr
Peter Mortensen
function getSel() {
var input = $("#text");
return input.html().toString().substring(getSelection().baseOffset, getSelection().extendOffset);
}
Bitte zeigen Sie ein Beispiel.
– Sumner Evans
20. April 2014 um 4:29 Uhr
Ich mag die Möglichkeit, jedes Element in Ihre Funktion zu übergeben, es macht es viel tragbarer/wiederverwendbar.
– Sumner Evans
20. April 2014 um 14:59 Uhr
10116700cookie-checkWie bekomme ich den ausgewählten Text in ein Textfeld? [duplicate]yes
Sehen Sie sich diese Frage an: stackoverflow.com/questions/401593/…
– tvanfosson
4. April 2009 um 15:08 Uhr