J'ai un plugin jQuery qui trouve la position du caret d'une zone de texte. Je l'implémente sur la fonction de touche de la zone de texte, comme ceci:
$("#editor").keyup(function () { var textbox = $(this); var end = textbox.getSelection().end; });
Je veux trouver le mot, ou partie d'un mot, avant le caret. Les mots sont délimités par n'importe quel type d'espace blanc.
Ma principale difficulté à faire cela concerne les casse-ligne. Comment puis-je trouver le mot ou la partie d'un mot immédiatement avant le caret compte tenu de l'indice de caractère du caret?
Si vous utilisez mon plug-in jQuery textarea pour cela, les positions des caractères de sélection sont toujours relatives à la propriété de value
de la zone de texte, peu importe la façon dont le navigateur gère les sauts de ligne. Vous pourriez alors obtenir le dernier mot comme suit:
Notez que vous devez utiliser la value
propriété textarea et non la méthode val()
de jQuery, qui normalise les sauts de ligne.
$("#editor").keyup(function () { var textbox = $(this); var end = textbox.getSelection().end; var result = /\S+$/.exec(this.value.slice(0, end)); var lastWord = result ? result[0] : null; alert(lastWord); });