I just set up a couple of functions that are executed upon users pressing the “ENTER” keyword. I was wondering if anyone has a more elegant solution or if this would be the only option?
I was looking at others’ solutions and I couldn’t find anything else. The reason is that both inputs belong to the same functions thus I’m curious to see a different approach. Here is my code:
This is the code on “search btn” click:
const searchBtnHandler = () => {
let countryValue = countryFilterAccess.value.trim().toUpperCase();
let searchCategory = searchCategoryMenu.value.trim();
if (countryValue === '' && searchCategory === '') {
return;
}
console.log(countryValue, searchCategory);
const results = filteredItems(countryValue, searchCategory);
if (results.length === 0) {
alert(`Not Items Found :(, Please Try Again`);
} else {
for (let el of itemElements) {
el.style.display = 'none';
}
results.forEach((result) => {
document.getElementById(result.id).style.display = 'grid';
});
if (!document.getElementById('cancel-search-btn')) {
addCancelFilterBtn();
} else {
return;
}
}
};
Below the code I created for action on “ENTER”
countryFilterAccess.addEventListener('keyup', (event) => {
if (event.keyCode === 13) {
event.preventDefault();
searchBtnAccess.click();
}
});
searchCategoryMenu.addEventListener('keyup', (event) => {
if (event.keyCode === 13) {
event.preventDefault();
searchBtnAccess.click();
}
});
I just want to see if there is a way to merge the two event listeners in one function.
Thank you!
Advertisement
Answer
function callbackFn(event){
if (event.keyCode === 13) {
event.preventDefault();
searchBtnAccess.click();
}
}
countryFilterAccess.addEventListener('keyup', callbackFn);
searchCategoryMenu.addEventListener('keyup', callbackFn);