2011-01-06 15 views
2

Ich möchte nicht markieren Text (durch Ändern der Hintergrundfarbe in gelb - NEIN), ich möchte nur einen Teil des Textes in Textarea, genau so, als ob der Benutzer geklickt und halte den Klick, dann bewegte die Maus, um zu markieren nur ein Teil des TextesJS/jQuery: Wie markieren oder markieren Sie einen Text in einem Textfeld?

Wie geht das? ist es möglich?

 function Select() { 
      var input = document.getElementById ("myText"); 
      if (input.selectionStart === undefined) { // Internet Explorer 
       var inputRange = input.createTextRange(); 
       inputRange.moveStart ("character", 1); 
       inputRange.collapse(); 
       inputRange.moveEnd ("character", 1); 
       inputRange.select(); 
      } 
      else {  // Firefox, Opera, Google Chrome and Safari 
       input.selectionStart = 1; 
       input.selectionEnd = 2; 
       input.focus(); 
      } 
     } 

Antwort

7

http://help.dottoro.com/ljtfkhio.php

Beispiel 1 würde in Ihrem Fall relevant sein "Tippen und mehr Dinge ..

+0

Dies wäre hilfreicher mit einer Zusammenfassung des relevanten Teils der verknüpften Seite. –

+0

@Tim, ich denke die ganze Seite ist relevant für die Frage. –

+1

Mein Punkt war mehr, dass diese Antwort ohne den Link völlig nutzlos wird, oder wenn der Link nicht mehr funktioniert. –

2

In Nicht-IE-Browsern ist dies einfach: Sie können die Werte der selectionStart und selectionEnd Eigenschaften des Textbereichs festlegen, oder verwenden Sie die setSelectionRange() Funktion (obwohl ich nie klar gewesen bin, warum diese Methode vorhanden ist: es scheint unnötig). Im IE ist es jedoch etwas komplizierter. Hier ist eine Cross-Browser-Funktion, die es tut:

var setInputSelection = (function() { 
    function offsetToRangeCharacterMove(el, offset) { 
     return offset - (el.value.slice(0, offset).split("\r\n").length - 1); 
    } 

    return function(el, startOffset, endOffset) { 
     el.focus(); 
     if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") { 
      el.selectionStart = startOffset; 
      el.selectionEnd = endOffset; 
     } else { 
      var range = el.createTextRange(); 
      var startCharMove = offsetToRangeCharacterMove(el, startOffset); 
      range.collapse(true); 
      if (startOffset == endOffset) { 
       range.move("character", startCharMove); 
      } else { 
       range.moveEnd("character", offsetToRangeCharacterMove(el, endOffset)); 
       range.moveStart("character", startCharMove); 
      } 
      range.select(); 
     } 
    }; 
})(); 

var textarea = document.getElementById("foo"); 

// Select the text between the second and third characters inclusive 
setInputSelection(textarea, 1, 3); 
Verwandte Themen