Javascript 将字符串转换为数组,并在文本区域内选择匹配的单词
Javascript 将字符串转换为数组,并在文本区域内选择匹配的单词,javascript,jquery,Javascript,Jquery,$('textarea')。在('keyup',function()上{ var ths=$(本); var数组=$(this.val().split(“”); array.forEach(函数(值){ if(value.match(/(三个字)/g)){ th.val().选择(值); } }) }) word twowords threewordsmatch()函数返回字符串数组中的匹配项,我举了一个示例来演示它 试着这样做: $('button').on('click', functio
$('textarea')。在('keyup',function()上{
var ths=$(本);
var数组=$(this.val().split(“”);
array.forEach(函数(值){
if(value.match(/(三个字)/g)){
th.val().选择(值);
}
})
})
word twowords threewords
match()函数返回字符串数组中的匹配项,我举了一个示例来演示它
试着这样做:
$('button').on('click', function(){
console.log('click');
var tarea = $('textarea');
var r = tarea.val().match(/(word)/g);
console.log(r);
console.log('jobs done');
});
试穿一下
然后,您还想做什么取决于您需要什么,如果您只想知道是否有匹配项,那么只需检查返回的数组是否为空即可
在这种情况下,为了方便起见,我使用一个按钮来触发检查
edit:version without buttonmatch()函数返回字符串数组中的匹配项,我举了一个示例来演示它
试着这样做:
$('button').on('click', function(){
console.log('click');
var tarea = $('textarea');
var r = tarea.val().match(/(word)/g);
console.log(r);
console.log('jobs done');
});
试穿一下
然后,您还想做什么取决于您需要什么,如果您只想知道是否有匹配项,那么只需检查返回的数组是否为空即可
在这种情况下,为了方便起见,我使用一个按钮来触发检查
编辑:不带按钮的版本
$('textarea')。在('keyup',function()上{
var wordToSearch='threewords'
var reg=new RegExp('\\b'+wordToSearch+'\\b')
var indexStart=$(this.val().search(reg)
如果(indexStart>=0){
this.selectionStart=indexStart;
this.selectionEnd=indexStart+wordToSearch.length;
}
})
单词两个单词三个单词
$('textarea')。在('keyup',function()上{
var wordToSearch='threewords'
var reg=new RegExp('\\b'+wordToSearch+'\\b')
var indexStart=$(this.val().search(reg)
如果(indexStart>=0){
this.selectionStart=indexStart;
this.selectionEnd=indexStart+wordToSearch.length;
}
})
word twowords threewords
。选择
与您预期的不一样
$(“#目标”)。选择(值)
语法不正确$(“#target”).select()
是一种有效的语法,但它不会突出显示它在id为“target”的元素上触发select
事件的任何内容select
事件将被触发。可以通过向其附加处理程序来处理它: $( "#target" ).select(function() {
$( "div" ).text( "Something was selected" ).show().fadeOut( 1000 );
});
th.val()。选择(值)代码>部分代码实际上不是函数。因此出现了错误
th.val().select()另一方面,code>最终会触发匹配值上的select
事件,这不符合您的目的。。select
的工作方式与您的预期不同
$(“#目标”)。选择(值)
语法不正确$(“#target”).select()
是一种有效的语法,但它不会突出显示它在id为“target”的元素上触发select
事件的任何内容
当选择任何文本时(如中),单击并用鼠标拖动,select
事件将被触发。可以通过向其附加处理程序来处理它:
例如:
$( "#target" ).select(function() {
$( "div" ).text( "Something was selected" ).show().fadeOut( 1000 );
});
th.val()。选择(值)代码>部分代码实际上不是函数。因此出现了错误
th.val().select()另一方面,code>最终会触发匹配值上的select
事件,这不符合您的目的。什么是。select()
应该做什么?你想在这个循环中做什么?@Kokogino我应该写多个单词,然后将它们转换为每个单词的数组,然后我检查这些单词中是否有一个等于word
,如果是,那么我想选择它来更改它。类似于高亮显示,但选择此特定单词时。请尝试th.val(值)而不是。select@Goran.it尝试后,它将清除所有文本区域
,然后仅在数组中键入最后一个值。我使用了th.val(value.select()
那么您想突出显示“word”的每一次出现吗?什么是.select()
应该做的?你想在这个循环中做什么?@Kokogino我应该写多个单词,然后将它们转换为每个单词的数组,然后我检查这些单词中是否有一个等于word
,如果是,那么我想选择它来更改它。类似于高亮显示,但选择此特定单词时。请尝试th.val(值)而不是。select@Goran.it尝试后,它将清除所有文本区域
,然后仅在数组中键入最后一个值。我使用了th.val(value.select()
所以你想突出显示每次出现的“word”?我用if(value.match(/(threewords)/g)检查了选择ing内部文本时出现了问题。@Toleo ok我想你只需要在正则表达式值中添加单词边界。match(/\b(word)\b/g)我用if(value.match(/(threewords)/g)检查了
问题发生在选择内部文本时。@Toleo ok我想您只需要在正则表达式值中添加单词边界。匹配(/\b(word)\b/g)