2016-10-25 9 views
0

アコーディオンで検索できるように検索機能を作ろうとしています。私はそれを作ることができますが、ユーザーがテキストを入力したときに自動的に拡張します。 Here is what I got自動アコーディオン検索中

$('#box').keyup(function(){ 
    var valThis = $(this).val().toLowerCase(); 
    if(valThis == ""){ 
     $('.source > li').show();   
    } else { 
     $('.source > li').each(function(){ 
      var text = $(this).text().toLowerCase(); 
       (text.indexOf(valThis) >= 0) ? $(this).show() : $(this).hide(); 
     }); 
    }; 
}); 

だから、検索中にアコーディオンを拡張することが可能でしょうか?

+0

にここを参照してくださいしかし、それは多くの/すべてに一致している場合は、1つはあなたが開くのだろうか? 2つ以上を開くと、アコーディオンが最適な表示オプションではない可能性があります。自動補完のような検索可能なフィールドを、ドロップダウンのように表示された一致するアイテムで実行する必要があります。 – antoni

+0

@antoni私の場合、私のアコーデオンはアルファベット順になっていますので、私のアコーデオンは1つしか一致しません。そう、それは私のためokです、フィドルだけの例では、私は私はあなたがそれをアルファベット順にソートされて見ることができるようにあなたは、フィドルを更新し確認することができます@antoni –

+0

どのように見えるかを表示するように変更されますので、私はそれがすべきであるものは何でも入力だと思います1つのタブのみを拡張する –

答えて

0

私は実際にあなたのコードをどうしようとかわからないんだけど?またはあなたの計画は?

とにかくあなたはそれだけでそのようなつもりはない仕事検索後.source > liリスト項目を表示してみてください。まずアコーデオンを表示してからリストを表示しなければならないからです。私はliのテキストを取得するために<li class="item"><span class="closer">x</span><p>Aaron</p></li>のliマークアップに少しビットを変更あなたのコードhttps://jsfiddle.net/05e1smbs/

注意して、この

$('#box').on('keyup', function() { 
    // $('.ui-accordion-content').hide(); 
    var valThis = $(this).val(); 

    if(valThis == ""){ 
     $('.ui-accordion-content').hide(); 
    } else { 
     $('.item').each(function() { 
      var currentLiText = $(this).find('p').text().toLowerCase(), 
      showCurrentLi = currentLiText.indexOf(valThis) !== -1; 
      $(this).toggle(showCurrentLi); 
      $(this).closest('.ui-accordion-content').show(); 
     }); 

     $('.ui-accordion-content').each(function() { 
     if($(this).children('.source').children(':visible').length == 0) { 
      $(this).hide(); 
     } 
     }); 
    } 
}); 

および完全な例のように、あなたのkeyup()機能を交換してください。 https://jsfiddle.net/05e1smbs/

関連する問題