@ermolushka

Как поменять местами значения в select?

Есть следующая структура:

<select id="countries" multiple="multiple" name="mark_countries">
    <option value="509_0">Russia</option>
    <option value="601_1">USA</option>
</select>

<button class="btn btn-default btn-xs btn-block" type="button" id="upcountry">Вверх</button>

Каждый value состоит из id + приоритет (509 - id, 0 - приоритет). Мне нужно, чтобы при выборе страны и последующем нажатии кнопки "Вверх" страна поднималась на одну позицию выше, а страна, чье место она заняла, опускалась бы на одну позицию вниз. При этом приоритет (значение после "_") должен также меняться.
  • Вопрос задан
  • 776 просмотров
Решения вопроса 1
@creatoroftheworld
var selectList = $('#countries'), button = $("#upcountry");
button.click(function() {
	var self = selectList.find('option:selected'),
	if (self.index() > 0 ) {
		self.insertBefore(self.prev());
		var counter = 0;
		selectList.find('option').each(function(){
			var value = $(this).attr('value').split('_')[0] + '_' + counter++;
			$(this).attr('value', value);
		})
	}
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
romy4
@romy4
Exception handler
не ну это совсем просто.
прошлись по элементам, выделили порядок, отсортировали массив, переместили элементы
и вобще это уже смахивает на задание
Ответ написан
Ваш ответ на вопрос

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

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