
28.04.2017, 14:27
|
Интересующийся
|
|
Регистрация: 28.04.2017
Сообщений: 12
|
|
Множественный выбор
Здравствуйте.
Подскажите пожалуйста, как с помощью формы множественного выбора (или checkbox) в html (или html+javascript) получить запрос вида:
example.ru/?cat=1&tag=tag1+tag2+tag3+tagN
Т.е. мне нужно обязательно, чтобы тэги разделялись знаком "+".
|
|

28.04.2017, 15:06
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
<form>
Тег 1<input type="checkbox" name="tag1" value = "Тег1"><br>
Тег 2<input type="checkbox" name="tag2" value = "Тег2"><br>
Тег 3<input type="checkbox" name="tag3" value = "Тег3"><br>
<input type="submit" value="Отправить">
</form>
<script>
document.querySelector('form').onsubmit = function(e){
e.preventDefault();
var data = "cat=1&tag=";
var boxes = document.querySelectorAll('input[type="checkbox"]:checked');
for(var i = 0; i < boxes.length; i++){
data += (i==0?"":"+") + boxes[i].value;
}
alert(data); // отправка GET
}
</script>
Последний раз редактировалось Dilettante_Pro, 28.04.2017 в 15:33.
|
|

28.04.2017, 15:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Dilettante_Pro,
Нельзя так, символом + кодируется пробел при передаче данных, а значит сервер получит tag1 tag2 tag3 tagN.
|
|

28.04.2017, 15:26
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,138
|
|
Dilettante_Pro,
tag= где?
|
|

28.04.2017, 15:27
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
laimas,
ТС просит
Цитата:
|
example.ru/?cat=1&tag=tag1+tag2+tag3+tagN Т.е. мне нужно обязательно, чтобы тэги разделялись знаком "+".
|
т.е. он, очевидно, и имеет в виду, что сервер получит tag1 tag2 tag3 tagN в одном параметре tag
Последний раз редактировалось Dilettante_Pro, 28.04.2017 в 15:31.
|
|

28.04.2017, 15:32
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
рони,
Сорри, пропустил 
Исправил 
Последний раз редактировалось Dilettante_Pro, 28.04.2017 в 15:35.
|
|

28.04.2017, 15:38
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,138
|
|
Sakhet,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<form>
Тег 1<input type="checkbox" name="tag1" value = "Тег1"><br>
Тег 2<input type="checkbox" name="tag2" value = "Тег2"><br>
Тег 3<input type="checkbox" name="tag3" value = "Тег3"><br>
<input type="submit" value="Отправить">
</form>
<script>
document.querySelector('form').onsubmit = function(e){
e.preventDefault();
var data = "cat=1";
var boxes = document.querySelectorAll('input[type="checkbox"]:checked');
if(boxes.length)
data += "&tag=" + [].map.call(boxes, function(el) {
return el.value
}).join("%2B");
alert(decodeURIComponent(data));
}
</script>
</body>
</html>
|
|

28.04.2017, 15:39
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Dilettante_Pro
|
т.е. он, очевидно, и имеет в виду, что сервер получит tag1 tag2 tag3 tagN в одном параметре tag
|
Ну не знаю так ли это, а если так, то глупо, ибо сервер получит массив элементов формы, и если их именовать подобающе, то проще просто "склеить" на сервере.
|
|

28.04.2017, 17:21
|
Интересующийся
|
|
Регистрация: 28.04.2017
Сообщений: 12
|
|
Спасибо большое, я уж думала, что это невозможно.
|
|

28.04.2017, 17:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Sakhet
|
я уж думала, что это невозможно.
|
А о том, что сервер должен проверять данные извне, а вы таким образом усложняете проверку пришедших данных, вы не думали?
|
|
|
|