Ich habe einen Arbeitsblock von Javascript auf einem HTML-Eingang/Suchleiste. Dies funktioniert bis auf ein Problem einwandfrei:Ändern der Javascript-Suchfunktion
Im Moment wird nach genauen Übereinstimmungen gefiltert. Daher durchsucht es die divs auf der Seite. Wenn eine der div- und ihrer untergeordneten Tabellen eine Übereinstimmung aufweist, löscht sie alle anderen Zeilen aus der Tabelle und überlässt die Zeile nur einer Übereinstimmung. Aber momentan stimmt es mit der exakten Zeichenfolge überein.
Dies ist nur ein Problem, da viele unserer Elemente einen Bindestrich zwischen Zahlen haben. Wenn also jemand nach 4378-65 sucht, filtert er, was er braucht, aber wenn er 437865 eingibt, wird alles ausgeblendet, weil es technisch keine Übereinstimmung gefunden hat.
Hoffentlich eine einfache Lösung, aber jede Hilfe wird sehr geschätzt.
Die 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>
Bitte verbringen einige Zeit erforscht, wie Textsuche zu behandeln. Es ist nicht so einfach. – zzzzBov
Die einfachste Lösung, die ich mir vorstellen kann, wäre das Entfernen von Bindestrichen aus der Suchzeichenfolge und der div-Zeichenfolge. Es scheint, als ob dir das '-' egal ist. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace –