@deadended

Как поставить условие сбросить все селекторы если второй с похожим именем выбран и оставить его без сброса?

вот так начинаю :

$("select").focus(function(){ 	 // id=city_form
      	
var zz = $(this).attr('id');
var n = zz.search("form");
if (n == '5') { 
		
$(this).attr('id', 'city_form'); // <- замена атрибута 
{
var id2 = 'city_form';
} 

...


Здесь нужно условие если выбран еще какой то селект то сбросить все кроме последнего выбранного.
и переименовать его Id. и продолжить дальше ..
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
После длительных пыток, было выяснено, что нужно что-то типа такого:
var citiesContainer = $('#cities')

// вешаем обработчик, который слушает все селекты, у который name начинается на city
// причем не на focus а на change, т.е. фокус без выбора не сбросит ничего.
citiesContainer.on('change', 'select[name^="city"]', myOnfocusHandler) 

function myOnfocusHandler() {
  var changedSelect = this // select в котором произошло событие change
  if ($(changedSelect).val() !== '') { // если что-то выбрано
    citiesContainer.find('select[name^="city"]').each(function(){ // проходим по всем селектам
      if (this !== changedSelect) { // кроме того где произошло событие change
        $(this).find('option').removeAttr('selected') // сбрасываем выбранные опции
      }
    })
  }
}


Демо: https://jsfiddle.net/hjjp9n04/

Но я осмелюсь еще раз предложить select2 или choosen с автодополнением
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект