2010-06-21 19 views
17

Ich versuche herauszufinden, wie nur ein Teil des Textes in einem Eingabefeld mit jQuery hervorheben. Es ist ganz einfach, den gesamten Inhalt des Eingabefeldes hervorzuheben, aber wie hebt man nur ein Wort oder ein paar Buchstaben hervor?Auswählen von Teil der Zeichenfolge in einem Eingabefeld mit jQuery

Danke!

+0

von „select“, meinen Sie es markieren, wie ausgewählt? Blau, mit weißem Text? – Kobi

+1

Was meinst du mit _select_? Meinst du Highlight wie was passiert, wenn du mit deinem Cursor wählst? – Kekoa

+0

Ich habe den Wortlaut korrigiert. Ich habe das Wort select benutzt, aber was ich wirklich meinte, war Highlight. Ich entschuldige mich für den Fehler. – Lukasz

Antwort

30

Für Text <input> Elemente wird das Folgende die Aufgabe erledigen. Das Beispiel wählt einfach das Wort „zwei“ in der Eingabe:

function setInputSelection(input, startPos, endPos) { 
 
    input.focus(); 
 
    if (typeof input.selectionStart != "undefined") { 
 
     input.selectionStart = startPos; 
 
     input.selectionEnd = endPos; 
 
    } else if (document.selection && document.selection.createRange) { 
 
     // IE branch 
 
     input.select(); 
 
     var range = document.selection.createRange(); 
 
     range.collapse(true); 
 
     range.moveEnd("character", endPos); 
 
     range.moveStart("character", startPos); 
 
     range.select(); 
 
    } 
 
} 
 

 
document.getElementById("setSelection").onmousedown = function() { 
 
    var input = document.getElementById("i"); 
 
    setInputSelection(input, 4, 7); 
 
    return false; 
 
};
<input id="i" type="text" value="One two three"> 
 
<input type="button" value="Set selection" id="setSelection">

+0

Genau das habe ich gebraucht! Vielen Dank! – Lukasz

+1

Ehrlich gesagt, ich weiß, das ist kein pädagogischer Kommentar, aber komm IE, wirklich !! 7 Zeilen Code im Vergleich zu 2. Sicher, Ihr Weg könnte dem Mix mehr Funktionalität hinzufügen, aber unnötig. Danke Tim für dieses Beispiel! –

+0

@JasonFoglia: Der Code dafür, dies im alten IE in Textareas, wo es leere Zeilen geben könnte, zuverlässig zu machen, ist [viel größer noch] (http://stackoverflow.com/a/3373056/96100). In Fairness, IE 9 behebt dies durch die Unterstützung von 'selectionStart' und' selectionEnd'. –

-1

Sie müssen den gesamten Wert auswählen und dann die Zeichenfolge im Code bearbeiten. Je nachdem, was Sie mit den Wörtern tun möchten, können Sie nach regulären Ausdrücken suchen, um bestimmte Wörter/Buchstaben zu finden.

+0

Wie hebt Ihr Code einen Teil des Texts in einem Eingabetextfeld hervor? –

Verwandte Themen