Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.04.2017, 14:27
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Множественный выбор
Здравствуйте.

Подскажите пожалуйста, как с помощью формы множественного выбора (или checkbox) в html (или html+javascript) получить запрос вида:
example.ru/?cat=1&tag=tag1+tag2+tag3+tagN

Т.е. мне нужно обязательно, чтобы тэги разделялись знаком "+".
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2017, 15:06
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2017, 15:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Dilettante_Pro,
Нельзя так, символом + кодируется пробел при передаче данных, а значит сервер получит tag1 tag2 tag3 tagN.
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2017, 15:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Dilettante_Pro,
tag= где?
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2017, 15:27
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2017, 15:32
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Сорри, пропустил
Исправил

Последний раз редактировалось Dilettante_Pro, 28.04.2017 в 15:35.
Ответить с цитированием
  #7 (permalink)  
Старый 28.04.2017, 15:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

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>
Ответить с цитированием
  #8 (permalink)  
Старый 28.04.2017, 15:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Dilettante_Pro
т.е. он, очевидно, и имеет в виду, что сервер получит tag1 tag2 tag3 tagN в одном параметре tag
Ну не знаю так ли это, а если так, то глупо, ибо сервер получит массив элементов формы, и если их именовать подобающе, то проще просто "склеить" на сервере.
Ответить с цитированием
  #9 (permalink)  
Старый 28.04.2017, 17:21
Интересующийся
Посмотреть профиль Найти все сообщения от Sakhet
 
Регистрация: 28.04.2017
Сообщений: 12

Спасибо большое, я уж думала, что это невозможно.
Ответить с цитированием
  #10 (permalink)  
Старый 28.04.2017, 17:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Sakhet
я уж думала, что это невозможно.
А о том, что сервер должен проверять данные извне, а вы таким образом усложняете проверку пришедших данных, вы не думали?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественный выбор. armolov Общие вопросы Javascript 15 16.06.2016 23:25
Выбор всех Select kvaleksandr Элементы интерфейса 12 27.10.2012 20:55
Выбор из таблицы HOmevl Общие вопросы Javascript 4 15.09.2011 01:40
Множественный выбор в анкете Владимир Седов Элементы интерфейса 2 21.05.2010 13:21
Выбор фреймворка маина Библиотеки/Тулкиты/Фреймворки 12 14.03.2009 22:21