So habe ich bereits einen Suchfilter an Ort und Stelle, aber jetzt möchte ich, dass er combine
Sätze suchen kann. Unten ist der Code, der eine Liste auf der Seite generiert.add [und] + [oder], um den Filter nach einer foreach generierten Liste zu suchen
<div class="sortable2">
<ul class="connectedSortable links loadfiles" id="loadfiles">
<?php
foreach ($result as $value) {
list($classname, $origin, $name) = explode('_', $value);
$classname = trim($classname, '[]');
$origin = trim($origin, '[]');
$name = pathinfo($name, PATHINFO_FILENAME);
echo "<li class='audiofile " . $name . " " . $classname . "' id='" . $value . "'>".
"<a class='btn_clone fa fa-clone' aria-hidden='true' id='' onclick='repeat(event)' title='Clone'> </a>".
"<a class='btn_addto fa fa-arrow-up' aria-hidden='true' id='' onclick='addto(event)' title='Add to playlist'> </a>".
"<a class='btn_removefrom fa fa-trash' aria-hidden='true' id='' onclick='removefrom(event)' title='Remove element'> </a>".
"<span class='audioclass'>" . $classname . "</span>".
"<a href='" . $directoryname . "/" . $value . "' target='_blank'>".
"<img src='images/avatars/" . $classname . ".jpg'>".
"<div class='audiotext'>".
"<span class='audiotitle'>" . $name . "</span>".
"<span class='audioorigin'>" . $origin . "</span>".
"</div>".
"</a>".
"</li>";
}
?>
</ul>
</div>
Diese Liste erzeugt grundsätzlich Blöcke wie:
frank
hello how are you
link to audio file
william
i am fine
link to audio file
frank
what?
link to audio file
Die Filterung durch diesen Code
$('#global_filter').keyup(function() {
var col_name = $(this).attr('class');
var search_val = $(this).val().toLowerCase();
$('.' + col_name).closest('#loadfiles > li').css('display', 'none');
$('.' + col_name).each(function() {
var val = $(this).text();
console.log($(this).text(), 'text');
if(val.toLowerCase().indexOf(search_val) >= 0) {
$(this).closest('#loadfiles > li').css('display', 'block');
}
});
});
, die mit
<div class="input">
<h4>Search field</h4>
<div class="all_all" id="filter_global">
<div align="left"><input type="text" name="global_filter" id="global_filter" class="audiofile"></div>
<div align="left"><input type="checkbox" name="global_regex" id="global_regex" ></div>
<div align="left"><input type="checkbox" name="global_smart" id="global_smart" checked></div>
</div>
</div>
Frage
01 arbeitet zusammen getan wirdWie kann ich den Filter ändern, um mehrere Suchsätze mit [AND]
und möglicherweise auch [OR]
wenn möglich zu ermöglichen. So kann der Anwender zum Beispiel in Typ:
frank [and] hello
und dies wird dann wieder
frank
hello how are you
link to audio file
Danke, aber ich war mehr auf der Suche nach einer Möglichkeit, es in den bereits vorhandenen Code und ohne Laden noch eine Bibliothek oder JS-Datei. – purple11111
Das Problem ist Tokenizing Strings und Boolean Matching auf diese Token ist ziemlich komplex und ist kein kleines Stück Code wirklich. Lassen Sie mich sehen, ob ich einen "Hack" hinzufügen kann, den Sie vielleicht versuchen würden. –
Das wäre wirklich cool. Schätzen Sie die Hilfe, die Sie geben und Vorschläge. Vielen Dank. – purple11111