2017-01-05 12 views
0

Jqueryを使用してWebページに検索ボックスを実装しようとしています。しかし、検索は期待どおりに機能していません。ユーザーが検索ボックスに何かを入力したとき。それは、ラジオ加入者、アクセスコントロールリストなどの項目名を検索する必要があります。Jquery検索ボックスの実装

また、誰も私はWebページ全体で同様の検索を実装するのに役立ちます。助けていただければ幸いです。

<div id="form_search"> 
<form class="searchFaq" action="#"> 
<input class="filterinput1" placeholder="Search for Catalog Items" type="text"> 
</form> 
</div> 

<div id="allItems" class="col-sm-3"> 
<a style="text-decoration: none; display: inline-block;" href="catalog.do?sysparm_id=36c0754109715940963780fde6ca6e78&sysparm_table=sc_cat_item"> 
<div class="panel panel-default" style="height: 275px; width: 275px; display: block;"> 
<div class="panel-heading" style="height: 90px; display: block;"> 
<div class="span_item" style="color: rgb(66, 139, 202); display: block;">Radio Subscriber</div> 
</div> 
<div class="panel-body" style="display: block;"> 
</div> 
</a> 
</div> 

<div id="allItems" class="col-sm-3"> 
<a style="text-decoration: none" href="catalog.do?sysparm_id=193ca5f809791940963780fde6ca6e6e&sysparm_table=sc_cat_item"> 
<div class="panel panel-default" style="height:275px;width:275px"> 
<div class="panel-heading" style="height:90px"> 
<div class="span_item" style="color:#428bca">Access Control List</div> 
</div> 
<div class="panel-body"> 
</div> 
</a> 
</div> 

スクリプト:あなたの

のHTMLをありがとう

<script type="text/javascript"> 
(function ($) { 
    jQuery.expr[':'].Contains = function(a,i,m){ 
     return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0; 
    }; 

    //live search function 
    function live_search(list) { 
    $(".filterinput1") 
     .change(function() { 
     //getting search value 
     var searchtext = $(this).val(); 
     if(searchtext) { 
      //finding If content matches with searck keyword 
      $matches = $(list).find('div:Contains(' + searchtext + ')').parent(); 
      //hiding non matching lists 
      $('div', list).not($matches).slideUp(); 
      //showing matching lists 
      $matches.slideDown(); 

     } else { 
      //if search keyword is empty then display all the lists 
      $(list).find("div").slideDown(200); 
     } 
     return false; 
     }) 
    .keyup(function() { 
     $(this).change(); 
    }); 
    } 

    $(function() { 
    live_search($("#allItems")); 
    }); 
}(jQuery)); 
</script> 

答えて

0

これはあなたを助け、私は、検索操作は、データをロードしaccross perfoms jQueryプラグインを開発しているかどうかわかりません。

開発者は、ツリー構造(親子関連)で整理されたデータソース(プロパティが事前定義されたオブジェクトの配列)を提供します。このプラグインは、ロードされたデータをseacrhで処理し、その一部または全部を選択する機能を提供します。

詳細については、READMEファイルをご確認ください。

また、DEMOページがあり、プラグインの機能を見ることができます。

0

大文字と小文字を区別しない検索自体は完全に機能します。問題は検索候補のリストに適用すると表示されます。 divsとして最初の親レベルのみを選択して表示します。このようにして、親と最初に選択されたdivが見えなくなります。これは明らかにあなたが望むものではありません。

あなたが意図したとおりに

$matches = $(list).find('div:Contains(' + searchtext + ')').parent(); 

$matches = $(list).find('div:Contains(' + searchtext + ')').parents().addBack(); 

に検索ボックスが動作するはずの行を変更します。 parents()はすべての世代(レベル)の親を選択し、 addBack()は実際のdiv自体を選択肢に追加してチェーン全体があなたのjqueryコレクション $matchesに入るようにします。

関連する問題