$('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>
我想要做的是select
text
匹配的textarea
如果匹配.match(/(threewords)/g)
,如果我写word
,
问题在于,如果匹配,我会.match()
null
为select is not a function
;如果匹配,则$("#id_classstartdate")
为$("[id^=id_][id$=classstartdate]")
,但是没有选择任何内容并且错误发生,怎么能我正在做我想做的事情吗?
答案 0 :(得分:2)
$('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>
如果代码写在textarea中,则此代码选择threewords
。
答案 1 :(得分:1)
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');
});
上试试
你还想做什么取决于你需要什么,如果你只是想知道是否有匹配你可以通过检查返回的数组是否为空来完成。
在这种情况下,我使用按钮触发检查以方便
编辑:没有按钮的版本jsfiddle
答案 2 :(得分:1)
.select
不能像你想要的那样工作。
$("#target").select(value)
语法不正确。 $("#target").select()
是一种有效的语法,但它不突出显示任何在id为'target'的元素上触发select
事件的内容。select
事件,例如鼠标单击并拖动。它可以通过附加一个处理程序来处理:示例:
$( "#target" ).select(function() {
$( "div" ).text( "Something was selected" ).show().fadeOut( 1000 );
});
ths.val().select(value);
部分代码确实不是函数。因此错误。
ths.val().select();
最终会触发匹配值上的select
事件,但不符合您的目的。