В данный момент я нажимаю на регионы стран и добавляю их имя в поле ввода, я делаю это, поскольку мне нужно отправить значение ввода в бэкэнд. Это я мог бы щелкнуть во многих странах, так что я сейчас делаю для одной страны:

<input type="text" id="usp-custom-3">

function zoomToFeature(e) {
        this.getElement().classList.toggle('active');
        var name = e.target.feature.properties.name;
        jQuery("#usp-custom-3").val(name);
  }

  function onEachFeature(feature, layer) {
    layer.on({
      click: zoomToFeature
    });
  }

С this.getElement().classList.toggle('active'); я имею в виду, когда я нажимаю на многоугольник страны. Как я уже сказал, я могу щелкнуть несколько стран, как добавить несколько названий стран в input, например "Италия Франция Испания", и удалить их, если мы снова нажмем на нее?

0
rob.m 28 Май 2017 в 20:54

2 ответа

Лучший ответ

Сохранить массив и показать что?

var selected=[];
function zoomToFeature(e) {
    this.getElement().classList.toggle('active');
    var name=e.target.feature.properties.name;
    var i;
    if((i=selected.indexOf(name))+1){//check if existing
       selected.splice(i,1);//remove
    }else{
       selected.push(name);//add
    }
    jQuery("#usp-custom-3").val(selected.join("<br>"));//show with each being in a new row
 }

function onEachFeature(feature, layer) {
layer.on({
  click: zoomToFeature
});
}
0
Jonas Wilms 28 Май 2017 в 18:03

Вероятно, что-то вроде этого:

const i = document.querySelector('input');

const els = document.querySelectorAll('p');

for (const el of els) {
  el.addEventListener('click', function() {
    const v = i.value.split(' '); // get countries inside input value
    if (!v.includes(el.textContent)) { // if not already in the input field
    	i.value = v.concat(el.textContent).join(' '); // add a new text
    } else {
    	i.value = v.filter(text => text !== el.textContent).join(' '); // remove if already there
    }
  })
}
<div>
  <p>Italy</p>
  <p>Spain</p>
  <p>Germany</p>
</div>

<input type="text">
0
Egor Stambakio 28 Май 2017 в 18:11