Twitter bootstrap Bootstrap 4如何基于数据属性值筛选列表

Twitter bootstrap Bootstrap 4如何基于数据属性值筛选列表,twitter-bootstrap,bootstrap-4,Twitter Bootstrap,Bootstrap 4,我在PHP上运行了以下表单 <form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search"> <label class="assistive-text" for="s"> <?php esc_html_e( 'Search', 'ithub' ); ?>

我在PHP上运行了以下表单

    <form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search">
        <label class="assistive-text" for="s">
            <?php esc_html_e( 'Search', 'ithub' ); ?>
        </label>
        <div class="input-group">
            <input class="field form-control" id="s" name="s" type="text" value="<?php the_search_query(); ?>">
            <span class="input-group-append">
                <input class="submit btn btn-primary" id="searchsubmit" name="submit" type="submit" ?>">
            </span>
        </div>
        <div class="col-lg-12 ml-auto p-2">
          <ul class="list-group" id="myList">
            <li class="list-group-item"><a href="#" data-meta="First item, house">First item</a></li>
            <li class="list-group-item"><a href="#" data-meta="Second item, car">Second item</a></li>
            <li class="list-group-item"><a href="#" data-meta="Third item, garage">Third item</a></li>
            <li class="list-group-item"><a href="#" data-meta="Fourth item, yard">Fourth</a></li>
        </ul>  
    </form>

下面是一个使用jQuery的解决方案。我在
.data('meta')
上进行筛选,以便能够找到您的示例中的“hou”。如果需要根据锚定本身中的文本进行筛选,可以使用
.text()
(取消对以下行的注释)

这是一个现场演示

下面是一个使用jQuery的解决方案。我在
.data('meta')
上进行筛选,以便能够找到您的示例中的“hou”。如果需要根据锚定本身中的文本进行筛选,可以使用
.text()
(取消对以下行的注释)

这是一个现场演示

以防万一,如果有人不得不使用Bootstrap
表单检查输入,我可以提供另一个Jquery选择器

Html(ASP.NET MVC Razor)


万一有人不得不使用Bootstrap
表单检查输入,我可以提供另一个Jquery选择器

Html(ASP.NET MVC Razor)

$('#s').on('input',function(e){
    let input = $(this).val()
    let filter = input.toUpperCase()
    $('.list-group .list-group-item').each(function() {
      let li = $(this)
      let anchor = li.children('a')
      // Filter by text
      // if(anchor.text().toUpperCase().indexOf(filter) > -1) {
      // Filter by meta
      if(anchor.data('meta').toUpperCase().indexOf(filter) > -1) {
        li.removeClass('d-none')
      } else {
        li.addClass('d-none')
      }
    });
});
<input class="form-control py-2 border-right-0 border" maxlength="100" type="search"
  value="" id="search-input" name="search-input">
    
<div class="list-group">
   @foreach (var item in Model.Where(x => x.DeviceNodeFaultTypeID == (int)DeviceNodeFaultTypeEnums.General).OrderBy(x => x.Definition))
   {
     <div class="list-group-item list-group-item-action p-1">
       <div class="form-check">
          <input class="form-check-input" type="radio" name="faults" id="f-@item.ID" value="@item.ID">
          <label class="form-check-label" for="f-@item.ID">
            @item.Definition
          </label>
          </div>
     </div>
   }    
</div>
document.getElementById('search-input').addEventListener('input', function (e) {
   let filter = $(this).val();
   if (filter.length > 0) {
      filter = filter.toUpperCase();
   }
   $('.list-group .list-group-item').each(function () {
     let li = $(this)
     let label = li.children('.form-check').children('.form-check-label');
     if (label.text().toUpperCase().indexOf(filter) > -1) {
        li.removeClass('d-none')
     } else {
        li.addClass('d-none')
     }
    });
});