Ich kann die tatsächliche Position des Cursors in einem Eingabefeld erhalten. Wie kann ich das ganze Wort auf diese Position bekommen? Zum Beispiel hat meine Eingabe den folgenden Text: Hello World
, und der Cursor ist auf Position 2. Wie kann ich Hello
bekommen?Wie bekomme ich eine Zeichenfolge unter dem Cursor in einem Eingabefeld mit JavaScript
Antwort
Kam mit kleinem Stück auf. Ich teile die Zeichenkette an der Cursorposition und hole die letzten Zeichen von der ersten Teilzeichenkette und die erste von der zweiten Zeichenkette.
var value = $(el).val()
var split = el.selectionStart
var a = value.substring(0, split).match(/[A-Za-z]*$/)[0]
var b = value.substring(split).match(/^[A-Za-z]*/)[0]
console.log(a + b)
function getWord (str, curPos) {
var startIndex = (function _this (pos) {
if (!str.substring(pos, pos + 1).match(/[A-Za-z]/)) {
return pos + 1;
} else if (pos === 0) {
return 0;
} else {
return _this(pos - 1);
}
})(curPos - 1);
var endIndex = (function _this (pos) {
if (!str.substring(pos, pos + 1).match(/[A-Za-z]/) || pos === str.length) {
return pos;
} else {
return _this(pos + 1);
}
})(curPos + 1);
return str.substring(startIndex, endIndex);
}
Siehe Beispiel hier zu arbeiten: http://jsfiddle.net/paulbruno/8PR9H/
Hier ist, was passiert. getWord
übernimmt die Eingabezeichenfolge str
und die aktuelle Position des Cursors curPos
. Es verwendet dann zwei rekursive anonyme Funktionen, um jeden Weg in der Zeichenfolge zu schieben, bis sie den Anfang und das Ende der Zeichenfolge treffen. Technisch gesehen heißen sie "Named Funciton Expressions" (see here) und ermöglichen es Ihnen, eine Funktion rekursiv aufzurufen, auch wenn Sie das Funktionsobjekt für die spätere Verwendung nicht speichern möchten. Nach dem Abrufen dieser beiden Indizes verwendet getWord
die Methode substring
erneut, um das Wort vom ursprünglichen str
zurückzugeben.
Try this: http://jsfiddle.net/fYkEB/
var el=document.getElementById('el');
var run=document.getElementById('run');
function findWord(str,pos){
var words=str.split(' ');
var offset=0;
var i;
for(i=0;i<words.length;i++){
offset+=words[i].length+1;
if (offset>pos) break;
}
return words[i];
}
run.onclick=function(){
run.value='Word at cursor: '+findWord(el.value,el.selectionStart);
};
Die folgenden Arbeiten für den ersten Raumzeichen auf der linken und auf der rechten Seite der Startposition der Suche und gibt die Zeichenfolge dazwischen. Er ist der Auffassung jede aufeinander folgende Reihe von Zeichen durch Leerzeichen abgegrenzt und funktioniert sogar, wenn die Eingabe alphanumerische ist:
function myGetWord(aString,aPos){
Nstr = aString.length;
var start = aPos;
var end = aPos;
while (start>0 && aString[start]!=" ")
start--;
while (end<Nstr && aString[end]!=" ")
end++;
return aString.substring(start,end);
}
- 1. Wie bekomme ich eine URL von einem Cursor-Objekt
- 2. Wie deaktiviere ich ein Eingabefeld mit Javascript?
- 3. einen Befehl unter dem Cursor in VIM
- 4. Wie bekomme ich die Kontrolle unter dem Mauszeiger?
- 5. Ereignis, wenn ich den Cursor von einem Eingabefeld
- 6. Wie zentriert man Text unter einem Eingabefeld mit Label?
- 7. Warum bekomme ich "Ein Cursor mit dem Namen existiert schon"?
- 8. Wie bekomme ich Abfrage Zeichenfolge Wert aus dem Skriptpfad?
- 9. Wie bekomme ich eine ausgewählte Zeichenfolge aus einem Tkinter Textfeld?
- 10. Wie kann ich überprüfen, ob der Text unter dem Cursor in einem contenteditable div ist "fett"
- 11. jQuery: Wie bekomme ich "Wert" von Datei-Upload-Eingabefeld
- 12. Wie benutze ich Javascript Aktueller Cursor Stil aus dem Browser
- 13. Wie bekomme ich die obersten 5 Elemente mit dem höchsten Vorkommen (Modus) in einem Javascript-Array
- 14. Auswählen von Teil der Zeichenfolge in einem Eingabefeld mit jQuery
- 15. Vim Suche mit ag das Wort unter dem Cursor
- 16. Wie kann ich eine Zeichenfolge mit Akzenten in Javascript überprüfen
- 17. Wie bekomme ich einen Webbrowser, um eine Datei herunterzuladen, die in einer JavaScript-Zeichenfolge gespeichert ist?
- 18. JavaScript erhalten Wort vor dem Cursor
- 19. Wie mache ich ein Eingabefeld nur Buchstaben in JavaScript akzeptieren?
- 20. Wie spalte ich eine Zeichenfolge mit einer Zeichenfolge in C#
- 21. Wie bekomme ich eine WPF Rich Textbox in eine Zeichenfolge
- 22. Wie setze ich "</script>" in eine JavaScript-Zeichenfolge?
- 23. Wie finde ich eine Nummer in einer Zeichenfolge mit JavaScript?
- 24. , wie eine Zeichenfolge in Javascript
- 25. Wie bekomme ich alle Struktur unter einem Paket in Golang?
- 26. Wie bekomme ich eine Zahl aus einer Zeichenfolge mit Regex
- 27. Wie bekomme ich die Single-Zeile mit dem Cursor in Android?
- 28. Wie bekomme ich das Fenster, in dem sich der Cursor mit X11 befindet?
- 29. Öffnen Sie eine Datei unter dem Cursor in einem geteilten Fenster
- 30. Android Wie bekomme ich eine Zeichenfolge aus der Zwischenablage onPrimaryClipChanged?
Dies ist eine schöne Methode. Das Worst-Case-Szenario wäre eine Zeichenfolge wie'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA [...] ', die wahrscheinlich die CPU töten würde. Eine gute Idee wäre, zu überprüfen, ob Platz vorhanden ist. –