zwelch: cursor an bestimmte textstelle setzen

hallo forum,
ist es mit javascript moeglich den cursor an eine bestimmte stelle (sagen wir mal nach dem 5ten wort oder auch irgendwas anderes) in einer textarea zu setzen?

danke :)

  1. Liebe(r) zwelch,

    ist es mit javascript moeglich den cursor an eine bestimmte stelle (sagen wir mal nach dem 5ten wort oder auch irgendwas anderes) in einer textarea zu setzen?

    ja.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hallo,

      ist es mit javascript moeglich den cursor an eine bestimmte stelle (sagen wir mal nach dem 5ten wort oder auch irgendwas anderes) in einer textarea zu setzen?

      ja.

      Naja, das Script macht eigentlich nur kleinere Änderungen an der Cursorposition. Ein weiteres Beispiel, das der Fragestellung eher entspricht:

        
      <script type="text/javascript">  
      [code lang=javascript]  
      function cursor () {  
       var input = document.getElementById("input");  
       if (input.setSelectionRange) {  
        input.focus();  
        var regexp = /^([^\s]+\s){5}/g;  
        var matches = regexp.exec(input.value);  
        if (!matches)  
         return;  
        var cursorposition = matches[0].length - 1;  
        // input.selectionStart = input.selectionEnd = cursorposition;  
        input.setSelectionRange(cursorposition, cursorposition);  
       } else if (input.createTextRange) {  
        var range = input.createTextRange();  
        range.move("word", 5);  
        range.move("character", -1);  
        range.select();  
       }  
      }  
      
      

      </script>
      <p><textarea name="input" id="input" cols="40" rows="10">eins zwei drei vier fünf sechs sieben</textarea></p>
      <p><input type="button" value="cursor" onclick="cursor()"></p>
      [/code]

      setSelectionRange ist etwas zuverlässiger im Opera als selectionStart/selectionEnd. Bin gerade dabei, einige Fehler zu melden...

      Im Internet Explorer gibt es die schöne Methode TextRange.move() mit dem Parameter "word". Leider ist das Komma für meinen MSIE 6 ein eigenes Wort, sodass der Cursor bei »eins, zwei, drei, vier, fünf« nicht hinter »fünf«, sondern hinter »drei« gesetzt wird. Vielleicht muss man daher im IE auch die Methode mit regulären Ausdrücken aus dem ersten Zweig der if-Anweisung verwenden. Über den Ausdruck ^([^\s]+\s){5} wird die Position des fünften »Wortes« gesucht.

      Wenn man das Wort kennt, hinter der der Cursor positioniert werden soll, kann man das ja über einen regulären Ausdruck suchen. Dann nimmt man einfach range.move("character", [Position nach dem gesuchten Wort]).
      TextRange.findText() ist wohl auch interessant, damit habe ich aber nicht experimentiert.

      Mathias