Gast: getSelection nicht im textarea?

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

  1. 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
    
  2. 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

    --
    Am Ende wird alles gut.
    1. 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

      1. 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.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)