Кто-нибудь знает, почему не работает фильтр/панель поиска? Мне нужен живой поиск и поиск по названию, описанию и тегам [Javascript

Форум по Javascript
Ответить
Anonymous
 Кто-нибудь знает, почему не работает фильтр/панель поиска? Мне нужен живой поиск и поиск по названию, описанию и тегам [

Сообщение Anonymous »

Поиск по списку вакансий в реальном времени не работает должным образом (название, теги, описание)
Я создаю компонент списка вакансий в WordPress, используя шорткод, который отображает все вакансии (jobpost произвольный тип сообщения). У каждой вакансии есть название, описание, местоположение, теги и название компании.
Я добавил форму живого поиска/фильтра с:
  • вводом ключевых слов
  • вводом местоположения
  • флажком «только удаленно»
  • "полный рабочий день только»
Все отображается на стороне клиента, а поиск обрабатывается с помощью только JavaScript (без AJAX или перезагрузки страницы). Проблема в следующем:

🔴 Фильтрация работает некорректно.
В частности, поиск должен просматривать:
  • должность (.job-title)
  • полное описание (.job-full-details-inner)
  • теги (.job-tags)
  • название компании (.job-company)
Но когда я вводю что-то в поле ключевого слова, ни одно задание не фильтруется правильно, даже если я ввожу точные совпадения.
// Shortcode: [hrc_job_list]
// Lista ofert pracy 1:1 jak w mockupie OFERTY_PRACY.HTML, BEZ zielonego banera
function hrc_job_list_shortcode() {

// pobieramy oferty z Simple Job Board (post type: jobpost)
$jobs = new WP_Query(array(
'post_type' => 'jobpost',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC',
));

if ( ! $jobs->have_posts() ) {
return 'Brak aktualnych ofert pracy.
';
}

// URL do strony z formularzem — dopasuj jeśli trzeba
$apply_base = home_url('/dla-pracownika/');

ob_start();
?>


/* --- KONTENER I STICKY SEARCH --- */
.jobs-container {
max-width: 1100px;
margin: 0 auto 80px;
padding: 0 20px;
position: relative;
box-sizing: border-box;
}
.gdpr-disclaimer {
font-size: 0.85rem;
color: #777;
margin: 30px 0 20px;
line-height: 1.5;
}
.sticky-search-panel {
position: sticky;
top: 80px;
z-index: 5;
background-color: #fff;
padding: 25px;
border-radius: 12px;
box-shadow: 0 10px 30px -10px rgba(0,0,0,0.15);
margin-bottom: 40px;
border: 1px solid #eee;
}
.search-form-grid {
display: grid;
grid-template-columns: 1fr 1fr auto;
gap: 20px;
margin-bottom: 20px;
}
.input-group input {
width: 100%;
padding: 15px 20px;
border: 2px solid #e0e0e0;
border-radius: 8px;
font-size: 1rem;
outline: none;
transition: border-color 0.3s;
box-sizing: border-box;
}
.input-group input:focus { border-color: #004d26; }
.search-btn {
background-color: #004d26;
color: white;
border: none;
padding: 0 30px;
border-radius: 8px;
font-weight: 600;
font-size: 1rem;
cursor: pointer;
transition: background-color 0.3s;
height: 100%;
}
.search-btn:hover { background-color: #006b35; }
.filters-row {
display: flex;
flex-wrap: wrap;
gap: 25px;
align-items: center;
padding-top: 15px;
border-top: 1px solid #eee;
font-size: 0.95rem;
}
.filter-checkbox {
display: flex;
align-items: center;
gap: 8px;
color: #555;
cursor: pointer;
}
.filter-checkbox input[type="checkbox"] {
accent-color: #004d26;
width: 16px;
height: 16px;
cursor: pointer;
}

/* --- LISTA OGŁOSZEŃ (AKORDEON) --- */
.jobs-list {
display: flex;
flex-direction: column;
gap: 20px;
}
.job-item {
background: white;
border-radius: 10px;
border: 1px solid #eee;
box-shadow: 0 2px 8px rgba(0,0,0,0.03);
overflow: hidden;
transition: all 0.3s ease;
}
.job-item.active {
border-left: 5px solid #004d26;
box-shadow: 0 15px 30px rgba(0,0,0,0.1);
}

/* Nagłówek karty */
.job-summary {
padding: 25px;
display: flex;
align-items: center;
gap: 30px;
cursor: pointer;
}
.job-logo {
width: 80px;
height: 80px;
flex-shrink: 0;
background-color: #f4f4f4;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
color: #aaa;
overflow: hidden;
font-size: 1.2rem;
}
.job-content { flex-grow: 1; }
.job-title {
margin: 0 0 8px 0;
color: #004d26;
font-size: 1.3rem;
}
.job-company {
font-weight: 600;
color: #555;
margin-bottom: 12px;
}
.job-details-row {
display: flex;
gap: 20px;
color: #777;
font-size: 0.9rem;
align-items: center;
}
.job-tags {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.tag {
background-color: #e8f5e9;
color: #004d26;
padding: 4px 10px;
border-radius: 50px;
font-size: 0.8rem;
font-weight: 600;
}

.job-actions {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 15px;
min-width: 140px;
}
.job-date {
font-size: 0.85rem;
color: #999;
}
.apply-btn-outline {
text-decoration: none;
color: #004d26;
border: 2px solid #004d26;
padding: 8px 25px;
border-radius: 50px;
font-weight: 600;
transition: all 0.3s;
white-space: nowrap;
background: white;
}
.apply-btn-outline:hover { background-color: #004d26; color: white; }

/* Szczegóły (akordeon) */
.job-full-details {
max-height: 0;
overflow: hidden;
background-color: #fafafa;
border-top: 1px solid #eee;
transition: max-height 0.5s ease-out;
}
.job-full-details-inner {
padding: 30px;
color: #444;
line-height: 1.6;
}
.details-section {
margin-bottom: 25px;
}
.details-section h4 {
color: #004d26;
margin: 0 0 10px 0;
font-size: 1.1rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}

/* RWD */
@media (max-width: 768px) {
.sticky-search-panel { top: 70px; padding: 20px; }
.search-form-grid { grid-template-columns: 1fr; }
.job-summary {
flex-direction: column;
align-items: flex-start;
gap: 15px;
}
.job-actions {
flex-direction: row;
width: 100%;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.job-logo { width: 60px; height: 60px; }
}


Wysyłając aplikację wyrażasz zgodę na przetwarzanie Twoich danych osobowych zgodnie z ustawą o ochronie danych osobowych.
Administratorem danych jest HR Consulting Sp. z o.o. Sp. k. z siedzibą w Poznaniu.









Szukaj oferty



Tylko praca zdalna


Pełny etat









Подробнее здесь: https://stackoverflow.com/questions/798 ... search-and
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»