Op mijn site heb ik een producten lijst. Al de artikelen staat in een li en die staan weer in één ul( id is productList). Ook staat er bovenaan een input( id is productInput). Als er in de input een naam van een artikel wordt ingevuld wordt alleen het artikel getoond met die naam. Hieronder de javascript code:
$(document).ready(function(){
$("#productInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#productList li").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
Maar ik wil nu als er geen producten zijn met de naam die is ingevuld dat er tekst komt met "Geen producten met de ingevulde naam" of iets dergelijks. Zo iemand mij hiermee kunne helpen hoe ik dit kan bereiken?
Hij doet het ook niet waarom weet ik niet. Ik heb dit toegevoegd onder de ul:
<span style="width:75%;" id="niets">
<h2 style="text-align: center;">
I am sorry, we could not find a product that contains what you have entered
</h2>
</span>
[size=xsmall]Toevoeging op 29/05/2020 10:09:02:[/size]
Hi het is me gelukt maar ben nu tegen een ander probleem aangelopen. Ik heb namelijk toegevoegd dat er class (notfound) moet worden toegevoegd als de span zichtbaar is, maar deze class wordt niet goed toegevoegd. Hij doet het de eerste keer wel als ik dan nog een letter invul voegt hij hem niet toe en dan weer wel. De class notfound kan ik niet normaal toevoegen aan de span aangezien er position: absolute; in staat en dan is hij altijd zichtbaar.
Wat kan ik hier aan doen? Dit is mijn javascript code:
[code]
$(document).ready(function(){
$("#productInput").on("keyup", function() {
//alles lower case maken zodat het te vergelijken is
var value = $(this).val().toLowerCase();
// alles tonen wat overeenkomt met het ingevulde
$("#productList li").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
//variable aantalzichtbaar gelijk stellen aan de het aantal li's dat zichtbaar is in de ul
var aantalzichtbaar = $("#productList li:visible").length;
//als er meer dan 0 zichtbaar zijn dan moet de tekst dat er niks is gevonden niet te zijn zijn anders wel
if(aantalzichtbaar > 0){
$('#niets').hide();
}else{
$('#niets').show();
const niets = document.querySelector(".niets");
niets.classList.toggle("notfound");
}
Kun je die hide/show weg laten en verplaats je het "probleem" verder volledig naar de CSS (persoonlijk vindt ik dat altijd de mooiste oplossing; als je dan wat aan je "look & feel" wilt veranderen hoef je geen code aan te passen).