Jquery在字符串

时间:2016-01-30 23:04:43

标签: javascript jquery

嗨所以我正在尝试以下方法: 我想在我的文本区

中搜索关键字

我的代码有效但现在我想让它搜索多个单词。 因此,如果我的关键字是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);
    });

3 个答案:

答案 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