Как передать значения отмеченных checkbox в url в виде get параметра?
В итоге хочу получить примерно такой url: www.test.ru/?r=1&r=2
.
Уточню нужно без кнопки submit.
let objectWithCheckboxes={},
withParams=!!location.search,
siteHref=location.href
$('input').change(e=>{
let el=e.target,
jq=$(el)
if(jq.is(':checked')) objectWithCheckboxes[el.id]=el.name
else delete objectWithCheckboxes[el.id]
let res=[]
for(let k in objectWithCheckboxes) res.push(objectWithCheckboxes[k]+'='+k)
res=res.length?(withParams?'&':'?')+res.join('&'):''
//window.history.replaceState('','',siteHref+res)
//^ эта строчка заменяет URL в браузере без перезагрузки страницы
console.log(siteHref+res)
//^ а это для теста
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="cbx1" name="r[]">
<input type="checkbox" id="cbx2" name="r[]">
<input type="checkbox" id="cbx3" name="r[]">
В итоге в php массиве $_GET['r']
будут находиться id елементов, на которых поставили флажок.
Если у Вас нет кнопки "submit" то вы должны к чему то привязывать формирование и отправку запроса на сервер. Очевидней всего привязываться к событию клик по чекбоксу. Однако нужно понимать что каждый клик по каждому чекбоксу будет генерировать запрос на сервер с значениями выделенных чекбоксов. Нужна ли серверу такая нагрузка?
в примере строку console.log(target.toString())
нужно заменить на тот механизм который отправит данные на сервер. Например fetch(target)
const sendCkecked = () => {
const target = new URL('http://www.test.ru/');
const boxes = document.getElementsByClassName('checkbox');
for (let i = 0; i < boxes.length; i++) {
if (boxes[i].checked) target.searchParams.set('r' + i, boxes[i].value)
}
console.log(target.toString()); // для демонстрации результата
// fetch(target); // для отправки данных на сервер
}
const blockEvent = event => event.stopPropagation();
<fieldset onClick="sendCkecked()">
<div>
<input type="checkbox" id="scales" class="checkbox"
value="1" />
<label for="scales" onClick="blockEvent(event)">1</label>
</div>
<div>
<input type="checkbox" id="horns" class="checkbox"
value="2" />
<label for="horns" onClick="blockEvent(event)">2</label>
</div>
<div>
<input type="checkbox" id="claws" class="checkbox"
value="3" />
<label for="claws" onClick="blockEvent(event)">3</label>
</div>
</fieldset>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
В документации написано, создаем приложение, берем файл и шлем его POST`ом в яндекс и все окПробуем отправить, получаем ошибку 401, "Неавторизованный...
Подскажите пожалуйста, какой подход будет более правильныйМне необходимо данные из таблицы в БД разпихать по разным блокам на странице согласно...
Есть таблица, в которой хранятся Бренды и их id – «Brands» @например@ (drand_id - 1, brand - KIA) Есть вторая таблица с товарами, в которую должны попадать...
Всем приветУ меня есть проекты, которые я полностью отдаю заказчикам на некоммерческое пользование, т