Что вы можете сделать:
- создать скрытый ввод формы с именем
brand
- переименовать ваш выбор на что-нибудь другое, например.
brand-select
- перехватить отправку формы с помощью
onsubmit
, создать правильную строку и передать ее в качестве значения для ввода brand
- , отключить ввод
brand-select
, чтобы он неотправил на сервер - наконец отправил форму
Я сделал быстрый пример на codepen :
HTML:
<form method="get" id="form" action="https://postman-echo.com/get">
<select name="brand-select" id="brand-select" multiple>
<option value="nike">Nike</option>
<option value="adidas">Adidas</option>
<option value="woodland">woodland</option>
</select>
<input type="hidden" name="brand" id="brand">
<input type="submit"></input>
</form>
JS:
const form = document.getElementById('form');
const brandSelector = document.getElementById('brand-select');
const brandInput = document.getElementById('brand');
form.onsubmit = (e) => {
// prevent form from submitting
e.preventDefault();
const formData = new FormData(form);
// get all selected brands from the brand selector
// and join them with '+'
const brands = formData.getAll('brand-select').join('+');
brandInput.value = brands;
// disable brand selector so it;s not included in the params
brandSelector.disabled = true;
// finally, submit the form
form.submit();
};
Когда вы отправите форму в Codepen, вы увидите, что postman-echo отображает отправленные аргументы: "args":{"brand":"nike+adidas+woodland"}
. Вы также можете использовать вкладку Network
в devtools, чтобы проверить URL, на который она была отправлена. В данном случае это: https://postman-echo.com/get?brand=nike%2Badidas%2Bwoodland
, поэтому значение бренда в URL-адресе равно nike+adidas+woodland