2017-11-08 1 views
1

JSONオブジェクトの文字列に基づいてオートコンプリート/フィルタ機能を使用するために、自分のサイトに検索フィールドを取得しようとしています。 JSONオブジェクト内にある可能性のあるものを除外する方法として検索ボックスを扱いたいと思います。JS filter/autocomplete

ここでは、HTMLでの検索バーです:

<form id="searchProducts"> 
<input type="text" class="md-input label-fixed" name="srch-term" id="srch-term" autofocus placeholder="Search Products"/> 
<span class="md-input-bar"></span> 
</form> 

そしてここでは、PHPの配列から作成されたJSONオブジェクトのJS、です:

<script type = "text/javascript"> 
var orderFormData = <?php Json_encode ($tempdata);?>; 
</script> 

私は最高の機能を使用するかわかりませんまたはJSONオブジェクトでどのように使用するのか、JSオートコンプリートが良い解決策かもしれないと聞いています。

これらを結びつけ、検索で素晴らしいオートコンプリート/フィルタ機能を使用する方法はありますか。

+0

私は巨乳だ...私はそれはあなたのために働くだろうかどうかを確認するために、このライブラリを使用しようとするつもりだったします。http:/ /leaverou.github.io/awesomplete/#downloadしかし時間がありませんでした。 –

答えて

1

これは単に概念実証として与えられる:

<form id="searchProducts"> 
<input type="text" class="md-input label-fixed" name="srch-term" id="srch-term" autofocus placeholder="Search Products"/> 
<span class="md-input-bar"></span> 
</form> 
<script> 
    var orderFormData = <?php Json_encode ($tempdata);?>; 
</script> 
<script> 
    var orderData = orderFormData // default value 
    var search = function (e) { 
    var term = e.currentTarget.value  
    orderData = Object.entries(orderFormData).reduce(function (data, entry) { 
     if (entry[0].match(term) || entry[1].match(term)) { 
     data[entry[0]] = entry[1] 
     } 

     return data 
    }, {}) 

    console.log(orderData) 
    } 

    document.querySelector('#srch-term').addEventListener('keyup', search)  
</script> 

これは、入力で与えられた用語のキー/値の一致に基づいて、フィルタ部を、ハンドル。

あなたはオートコンプリートをしたい場合は、より多くをコーディングする必要があります:)

+0

私は実際にはフィルタリングするだけでオートコンプリートはしません。しかし、私はこれを私のコードにフォーマットしています。したがって、orderformdataのすべてがページにロードされるので、一致を入力すると、一致したアイテムのみがページに表示されますが、ページ上では何も変更されません。私のエントリが特定のindecesと一致しないとコンソールが言うが、私は画面上のテキストを見ている。私はもう少しそれをしなければならないだろう –

0

あなたはechoを追加するのを忘れ:

<?php echo json_encode($tempdata);?>; 

あなたがjson_encodeを使用している場合は、あなたがechoまたはprint()する必要があります。また、必ず正しいケース(オプション)を使用してください。

+0

ありがとう、私は今それを追加しました。私はまだフィルタ/オートコンプリートオプションでいくつかの援助が必要ですが、それは役に立ちます –

+0

@TomN。確かに、何が起きていますか? – Soolie