$('textarea').on('keyup', function(){
var ths = $(this);
var array = $(this).val().split(' ');
array.forEach(function(value){
if (value.match(/(threewords)/g)) {
ths.val().select(value);
}
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea>word twowords threewords</textarea>
Ce que je veux faire, c'est select
le text
correspondant à l'intérieur du textarea
s'il correspond au .match(/(threewords)/g)
si j'ai écrit word
,
Le problème est que je continue à obtenir que .match()
est null
s'il n'y a pas de correspondance ou que je reçois select is not a function
si la correspondance existe, mais rien n'est sélectionné et l'erreur se produit, comment puis-je faire quoi j'essaye de faire correctement?
3 réponses
$('textarea').on('keyup', function(){
var wordToSearch = 'threewords'
var reg = new RegExp('\\b' + wordToSearch + '\\b')
var indexStart = $(this).val().search(reg)
if(indexStart >= 0){
this.selectionStart = indexStart;
this.selectionEnd = indexStart + wordToSearch.length;
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea>word twowords threewords</textarea>
Ce code sélectionne threewords
s'il est écrit dans la zone de texte.
.select
ne fonctionne pas comme vous le souhaitez.
$("#target").select(value)
est une syntaxe incorrecte.$("#target").select()
est une syntaxe valide mais elle ne met rien en évidence, elle déclenche l'événementselect
sur un élément avec l'ID 'target'.- L'événement
select
est déclenché lorsqu'un texte est sélectionné, comme dans, cliqué et glissé par la souris. Il peut être géré en y attachant un gestionnaire:
Exemple:
$( "#target" ).select(function() {
$( "div" ).text( "Something was selected" ).show().fadeOut( 1000 );
});
ths.val().select(value);
une partie de votre code n'est pas une fonction en effet. D'où l'erreur.
En revanche, ths.val().select();
finit par déclencher l'événement select
sur la valeur correspondante qui ne sert pas votre objectif.
La fonction match () renvoie les correspondances dans un tableau de chaînes, j'ai mis un exemple pour le démontrer plus facilement
Essayez comme ceci:
$('button').on('click', function(){
console.log('click');
var tarea = $('textarea');
var r = tarea.val().match(/(word)/g);
console.log(r);
console.log('jobs done');
});
Essayez-le sur jsfiddle
Ce que vous voulez faire d'autre dépend de ce dont vous avez besoin, si vous voulez juste savoir s'il y a une correspondance, vous pouvez simplement le faire en vérifiant si le tableau retourné est vide ou non.
Dans ce cas, j'utilise un bouton pour déclencher le contrôle pour plus de commodité
Modifier: version sans bouton jsfiddle