私は、HTML入力/検索バーにJavascriptの作業ブロックを持っています。これは1つの問題を除いて完全に動作します:javascript検索機能を変更する
今、完全一致でフィルタリングします。したがって、ページのdivを検索し、divとその子テーブルのいずれかに一致するものがあれば、そのテーブルから他のすべての行を削除し、一致する行のみを残します。しかし、現在、それは正確な文字列に一致します。
これは多くのアイテムに数字の間にハイフンが付いているため、これは問題になるだけです。だから誰かが4378-65を検索すると必要なものがフィルタリングされますが、437865と入力すると技術的に一致するものが見つからなかったためすべてが隠されます。
うまくいけば簡単な修正ですが、どんな助けでも大歓迎です。
JS:ハイフンを推定
<script type = "text/javascript">
$(document).ready(function(){
$("#srch-term").keyup(function(){
//For entered search values
// Retrieve the input field text and reset the count to zero
var filter = $(this).val(), count = 0;
var search_regex = new RegExp(filter, "i")
// Loop through the main container as well as the table body and row that contains the match
$(".group-container").each(function(){
//check if filter matches the group name or description
var group_name = $(this).children('h3').text()
var group_description = $(this).children('.uk-text-muted').text()
if(group_name.search(search_regex)>=0 || group_description.search(search_regex)>=0){ // filter matches
$(this).show() // show group
$(this).find("tbody tr").show() // and all children
return // skip tr filtering
}
var no_matches = true
$(this).find("tbody tr").each(function(){
// If the list item does not contain the text phrase fade it out
if ($(this).text().replace('Available','').search(search_regex) < 0)
{
$(this).hide();
// Show the list item if the phrase matches and increase the count by 1
} else {
$(this).show();
count++;
no_matches = false
}
});
if(no_matches){ // if no tr matched the search either, hide whole group
$(this).hide();
}
});
});
});
</script>
をテキスト検索を処理する方法を研究し、いくつかの時間をお過ごしください。それほど簡単ではありません。 – zzzzBov
私が考えることができる最も簡単な解決策は、検索文字列とdivの文字列の両方からハイフンを削除することです。 ''を気にしないようです。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace –