#php #wordpress #checkbox
#php #wordpress #флажок
Вопрос:
У меня есть фильтр, представляющий собой список стран, зацикленный с помощью foreach, я хочу иметь возможность сохранять статус флажка при обновлении страницы. Так, например, если Япония отмечена, она должна оставаться отмеченной при обновлении страницы. Как мне это сделать, я видел несколько сообщений об использовании localstorage, но работает ли это с моим кодом, у которого нет «id»? Возможно ли это сделать с помощью «name=»filter_country[]»? У меня также есть фильтр, который использует «Радио», я не уверен, работает ли он как для радио, так и для флажка.
<ul class="filter-country">
<?php foreach($countries as $country):?>
<li class="filter-child filter-item">
<div class="checkbox">
<label>
<input type="checkbox" class="dir-filters filter-checkbox" name="filter_country[]" value="<?php echo $country;?>">
<?php echo $country;?>
</label>
</div>
</li>
<?php endforeach;?>
Комментарии:
1. Мне было бы интересно узнать, где поддерживается список стран с помощью модели данных WP. Это категория / сообщение или пользовательский тип сообщения. Код, который вы предоставили, относится к пользовательскому интерфейсу, но как вы отслеживаете выбранную страну в базе данных? Этот выбор страны зависит от пользователя или что-то устанавливает пользователь-администратор?
Ответ №1:
Это должно сработать
// get all checkboxes
const countries = document.querySelectorAll('.filter-checkbox');
// when checked set its value to localstorage
countries.forEach(country => {
country.addEventListener('change', () => {
localStorage.setItem('checkedCountry', country.value);
});
});
// checking for localstorage. If checkbox value is the same as value in localstorage we set it's attribute checked to be true
countries.forEach(country => {
const checkedCountry = localStorage.getItem('checkedCountry');
if(checkedCountry amp;amp; checkedCountry === country.value ) {
country.checked = true;
}
});
Обратите внимание, что флажки можно проверять в любом количестве стран, но в этом примере мы сохраняем только одно значение в localstorage. Таким образом, после перезагрузки будет проверена только последняя проверенная страна. Если это не то, что вы ищете, пожалуйста, сообщите
Комментарии:
1. Привет, спасибо, все работает именно так, как я хочу! Но возможно ли сделать так, чтобы он сохранял сразу несколько стран? Это работает только для одной страны