簡単な検索/フィルタ機能を作るためのjQueryがあります。この機能は、ユーザーがテキストフィールドに入力することを可能にし、その文字列を持つリストアイテムのみを表示します。つまり、 'red'と入力すると、 'red'を含むすべてのリストアイテムが表示されます。jQueryに別々の値を認識させるにはどうすればいいですか?
私の問題は、正確な入力でのみ動作するということです。つまり、「赤い青色」と入力すると、「青い赤色」または他の「赤色」の項目ではなく「赤い青色」を見つけることになります。
誰かが私の問題の解決に役立つでしょうか?
はここに私のコードです:コメントで示唆したように
$('#box').keyup(function() {
var valThis = $(this).val().toLowerCase();
if (valThis == "") {
$('.filterlist>li').show();
} else {
$('.filterlist>li').each(function() {
var text = $(this).text().toLowerCase();
(text.indexOf(valThis) >= 0) ? $(this).show(): $(this).hide();
});
};
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="box" type="text" placeholder="Search">
<ul class="filterlist" style="list-style:none;">
<li>red</li>
<li>blue</li>
<li>red blue</li>
<li>blue red</li>
</ul>
正確に@JasonF – dinesh
文字列を単語境界で分割し、各単語を別々に処理して結果を照合しようとしましたか?また、これは[autocomplete widget](http://jqueryui.com/autocomplete/)のかなり一般的な使用例です。 – blgt
正確な用語を入力した場合にのみ機能します。 「赤い青」と入力すると、「赤」と「青」の「すべて」の項目が表示されます。 – JasonF