Одной из наиболее полезных функций инструментов dev является то, что при написании имени функции вы возвращаете исходный код. Вот исходный код функции selectCountry
:
function selectCountry(select) {
if (select.value == "000") return;
var option = select.options[select.selectedIndex];
var ul = select.parentNode.getElementsByTagName('ul')[0];
var choices = ul.getElementsByTagName('input');
for (var i = 0; i < choices.length; i++)
if (choices[i].value == option.value) {
$("#selcountry:selected").removeAttr("selected");
$('#selcountry').val('[]');
return;
}
var li = document.createElement('li');
var input = document.createElement('input');
var text = document.createTextNode(option.firstChild.data);
input.type = 'hidden';
input.name = 'countries[]';
input.value = option.value;
li.appendChild(input);
li.appendChild(text);
li.onclick = delCountry;
ul.appendChild(li);
addCountry(option.firstChild.data, option.value);
$("#selcountry:selected").removeAttr("selected");
$('#selcountry').val('');
}
Ваш недостаток теперь очевидна. selectCountry
принимает весь выберите элемент в качестве аргумента, в отличие от выбора своей стоимости (который ужасный дизайн, но Мех). Вместо того чтобы передавать значение элемента, изменить его индекс:
var sel = document.getElementById('selcountry');
var opts = sel.options;
for(var i = 0; i < opts.length; i++) {
sel.selectedIndex = i
selectCountry(sel)
}
Я действительно надеюсь, что это для тестового кода или что-то подобное, и вы не строите продукт/инструмент на этом ... – Codeman
Пожалуйста уточюните просто что это не работает. Также будет полезно использовать jsfiddle. –