@DaBags

Как убирать из url переменную при снятии чекбокса?

Пример кода:
let objectWithCheckboxes={},
withParams=!!location.search,
siteHref=location.href
$('input').change(e=>{
  let el=e.target,
  jq=$(el)
  if(jq.is(':checked')) objectWithCheckboxes[el.name]=el.value
  else delete objectWithCheckboxes[el.name]
  let res=[]
  for(let k in objectWithCheckboxes) res.push(k+'/'+objectWithCheckboxes[k])
  res=res.length?(withParams?'/':'/')+res.join('/'):''
  window.history.replaceState('','',siteHref+res)
})

HTML:
<input type="checkbox" class="checkbox" value="1" name="value1">
<input type="checkbox" class="checkbox" value="1" name="value2">
<input type="checkbox" class="checkbox" value="1" name="value3">
<input type="button" value="Применить фильтр" onClick="location.reload()" />


Суть проблемы:
При нажатии на чекбоксы в адресную строку подставляются нужные переменные со значением 1, нажимаем "Применить фильтр" и все ок (на php реализовано что из url вытягиваются переменные и выбранные чекбоксы остаются отмеченными или лучше это тоже на js сделать?). НО! После перезагрузки страницы, при снятии чекбокса (отправки формы), из адреса не удаляются значения, т.е они начинают повторятся (что не есть нужно): site.ru/value1/1/value2/1/value1/1/value1/1

Вопрос: как исправить ситуацию, чтоб после обновления страницы (когда уже имеется адрес типа site.ru/value1/1/value2/1 и снятия/добавления первого и второго чекбоксов они удалялись и снова добавлялись в адрес, а не повторно добавлялись?

P.S. ещё можете посоветовать дельные/понятные для новичка уроки по js, давно хотел начать учить хотя бы основы.
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы