getSelection nicht im textarea?
Gast
- javascript
Hallo,
ich möchte in einem Textarea einen Text markieren und den markierten Wert auslesen. Das funktioniert nicht, es wird eine leere Zeichenkette ausgegeben.
function selectedText ()
{
if (window.getSelection) {
alert("1 "+document.getSelection());
} else if (document.getSelection) {
alert("2 "+document.getSelection());
} else if (document.selection) {
alert("3 "+document.selection.createRange().text);
}
<p onmouseup="selectedText()">Hier klappts</p>
<textarea name='sammelfeld' style='width:99%; height:10em' onmouseup="selectedText()">aber hier nicht</textarea>
Mit document.sammelfeld.getSelection() gibt's sogar eine Fehlermeldung.
Wie kann ich markierten Text aus einem textarea greifen?
Gruß, Gast
sorry, Übertragungsfehler. Ändert aber nichts an der Problemstellung.
function selectedText ()
{
if (window.getSelection) {
alert("1 "+document.getSelection()); // falsch
alert("1 "+window.getSelection()); // richtig
} else if (document.getSelection) {
alert("2 "+document.getSelection());
} else if (document.selection) {
alert("3 "+document.selection.createRange().text);
}
Gast
Hi,
ich möchte in einem Textarea einen Text markieren und den markierten Wert auslesen. Das funktioniert nicht, es wird eine leere Zeichenkette ausgegeben.
afaik für ie:
var range = document.selection.createRange();
var text = range.text;
ansonsten:
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var text = textarea.value.substring(start, end);
Gruesse, Joachim
Hi,
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var text = textarea.value.substring(start, end);
Danke, so geht's:
var txt;
var start = document.getElementsByName('sammelfeld')[0].selectionStart;
var end = document.getElementsByName('sammelfeld')[0].selectionEnd;
var txt = document.getElementsByName('sammelfeld')[0].value.substring(start, end);
Gruß, Gast
Lieber Gast,
var start = document.getElementsByName('sammelfeld')[0].selectionStart;
var end = document.getElementsByName('sammelfeld')[0].selectionEnd;
var txt = document.getElementsByName('sammelfeld')[0].value.substring(start, end);
es ist unperformant und unschön zu lesen, wenn hier mehrfach ein Element mühsam über getElementsByName ermittelt wird. Besser ist es, nach dem ersten Benutzen dieser Methode das Ergebnis in einer Variablen abzulegen und dann diese zu nutzen, anstatt die Methode weiterhin zu bemühen.
Dein Code lässt sich so vereinfachen:
~~~javascript
var feld = document.getElementsByName('sammelfeld')[0];
var txt = feld.value.substring(feld.selectionStart, feld.selectionEnd);
Liebe Grüße,
Felix Riesterer.