【问题标题】:check if string contains any character on keyup检查字符串是否包含 keyup 上的任何字符
【发布时间】:2013-12-04 23:20:35
【问题描述】:

我正在尝试在我的网站上进行实时搜索,我已经让它在输入字段和链接标题匹配的地方工作,但它必须是整个单词。是否可以在下面的代码中显示包含变量 V 的特定值的任何结果:

HTML:

<form id="live-search" action="" class="styled" method="post">
       <input type="text" class="text-input" id="filter" value="" />
</form>


<div class="videoItems">
    <a title="Oliver" href="#" class="comedy"><img src="#" class="coverImg" alt="" /></a>
    <a title="Frank" href="#" class="scifi"><img src="#" class="coverImg" alt="" /></a>
    <a title="Ted" href="#" class="scifi"><img src="#" class="coverImg" alt="" /></a>
    <a title="James" href="#" class="scifi"><img src="#" class="coverImg" alt="" /></a>            
</div>

jQuery:

$("#filter").keyup(function(){
        var v = $('#filter').val().toLowerCase();
        if ( $('#filter')[0].value.indexOf('> <') !== -1 ){
            $('.videoItems a').show();                
        }
        console.log($('#filter').val());
        if($('#filter').val() == ''){
            $('.videoItems a').show();
        }else{
            $('.videoItems a').each(function(){
                var name = $(this).attr('title').toLowerCase();
                if(name == v){
                    $(this).show(); 
                }else{
                    $(this).hide(); 
                }
            });
        }
 });

我也发了jsfiddle

提前感谢您的帮助。

【问题讨论】:

    标签: jquery html search each contains


    【解决方案1】:

    解决方案涉及使用indexOf 来查看一个字符串是否包含另一个字符串。

    如果您希望 oli 和 ive 都匹配 Oliver,请使用:

    http://jsfiddle.net/vQLGG/

    if (name.indexOf(v) > -1) {
    

    如果您想要“开始于”搜索,请使用:

    http://jsfiddle.net/NSnMH/

    if (name.indexOf(v) == 0) {
    

    【讨论】:

      【解决方案2】:

      如果您使用正则表达式进行搜索,您可能会拥有更大的灵活性,而且它的工作速度会更快。

      $("#filter").keyup(function(){
          var v = new RegExp($('#filter').val().toLowerCase(), "g");
          if ( $('#filter')[0].value.indexOf('> <') !== -1 ){
              $('.videoItems a').show();                
          }
          console.log($('#filter').val());
          if($('#filter').val() == ''){
              $('.videoItems a').show();
          }else{
              $('.videoItems a').each(function(){
                  var name = $(this).attr('title').toLowerCase();
                  if(v.test(name)){
                      $(this).show(); 
                  }else{
                      $(this).hide(); 
                  }
              });
          }
      

      });

      【讨论】:

        猜你喜欢
        • 2012-11-15
        • 2021-06-12
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        • 2017-09-23
        • 2015-03-24
        • 2020-12-01
        相关资源
        最近更新 更多