嗨所以我正在尝试以下方法: 我想在我的文本区
中搜索关键字我的代码有效但现在我想让它搜索多个单词。 因此,如果我的关键字是3个单词,则必须在文本区域中查找3个单词,我不知道如何执行此操作。
所以,如果我的关键字是" Mac Air"然后它必须找到“#Air;" Mac Air"在textarea
我的代码:
<div class="form-group">
<label><span class="error error-fields"></span>Focus Keyword</label>
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="Focus Keyword">
</div>
<div class="form-group">
<label><span class="error-description error-fields"><?php echo $description_error ?></span>Page content</label>
<textarea rows="15" type="text" class="form-control" id="description" name="description" placeholder="Page Description"></textarea>
<p><span class="contentcount"><b>0</b></span> words</p>
</div>
$('#description').keyup(function(e){
var v = $(this).val().toLowerCase(),
w = v.split(/\s/),
needle = $('#keyword').val().toLowerCase(),
c = 0;
for (var i=0,len=w.length;i<len;i++){
if (w[i] === needle){
c++;
}
if(c > 0 && $('#keyword').val() != ''){
var value = 'Yes';
document.getElementById("seocontentshow").style.color = 'limegreen';
}else{
var value = 'No';
document.getElementById("seocontentshow").style.color = 'red';
}
checkstatus();
extrafunctions();
}
$('.content-content').text(value);
});
答案 0 :(得分:2)
我认为RegEx太复杂了。只需使用indexOf()
:
$('#description').keyup(function(){
var v = $(this).val().toLowerCase();
var needle = $('#keyword').val().toLowerCase();
var found = v.indexOf(needle) > -1;
if (found) {
value = 'Yes';
document.getElementById("seocontentshow").style.color = 'limegreen';
}else{
value = 'No';
document.getElementById("seocontentshow").style.color = 'red';
}
checkstatus();
extrafunctions();
$('.content-content').text(value);
});
答案 1 :(得分:0)
为什么不使用String.match
?
$('#description').keyup(function (e) {
var descriptionValue = $(this).val().toLowerCase();
if (descriptionValue.match(new RegExp($('#keyword').val(),'i'))) {
var value = 'Yes';
document.getElementById("seocontentshow").style.color = 'limegreen';
} else {
var value = 'No';
document.getElementById("seocontentshow").style.color = 'red';
}
checkstatus();
extrafunctions();
$('.content-content').text(value);
});
答案 2 :(得分:0)
正则表达式使这项工作变得非常简单。
$('#description').keyup(function() {
var keyword = $('#keyword').val();
var text = $('p').text();
var pattern = new RegExp(keyword, 'gi');
if(text.match(pattern))
alert("Keyword found!");
else
alert("Keyword wasn't found");
});
小提琴: https://jsfiddle.net/c2dxu3p6/
您可以在此处阅读正则表达式: https://en.wikipedia.org/wiki/Regular_expression
另外,这是一个演示: https://regex101.com/r/sV8lC5/1