| 
	| 
	
	| 
		
	| 
			
			 
			
				28.06.2022, 21:22
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 28.06.2022 
						Сообщений: 8
					 
		
 |  |  
	| 
				Как поменять последний выпадающий список на кнопку поиска?
			 Есть готовый рабочий код. Подскажите, пожалуйста, как изменить последний выпадающий список на кнопку "найти", а так же сделать, чтобы эту кнопку можно было нажать при выборе значения хотя бы в одном выпадающем списке. 
<div class="chained-selects">
  <select class="app-select form-control">
    <option selected>Выберите марку</option>
  </select>						    
  <select class="app-select form-control" disabled>
    <option selected>Выберите модель</option>
  </select>						    
  <select class="app-select form-control"disabled>
    <option selected>Выберите кузов</option>
  </select>    										    						  
</div>
const options = generateOptions();
const chainedSelects = document.querySelector(".chained-selects");
chainedSelects.addEventListener("change", onChange, false);
draw(chainedSelects.firstChild, options);
function onChange(event) {
  const { target } = event;
  let node = target, path = [];
  while (node = node.nextElementSibling) {
    node.length = 1;
    node.disabled = true;
  }
  if (target.selectedIndex === 0) return;
  node = target;
  do path.push(node.value);
  while (node = node.previousElementSibling);
  if (target.nextElementSibling) {
    const option = path.reduceRight((option, property) => option[property], options);
    draw(target, option);
  } else {
    const option = path.slice(1).reduceRight((option, property) => option[property], options);
    const value = option[target.value];
    if (value == null) return;
    location.href = value.url || value;
  }
}
function draw(target, option) {
  for (const [property, value] of Object.entries(option))
    target.nextElementSibling.add(new Option(property, property));
  target.nextElementSibling.disabled = false;
}
function generateOptions() {
  return {
    "AUDI": {
      "80": {
        "B3": {
          url: "p1.html"
        },
        "B4": {
          url: "p2.html"
        }
      },
      "100": {
        "C3": {
          url: "p3.html"
        },
        "C4": {
          url: "p4.html"
        }
      }
    },
    "BMW": {
      "3 series": {
        "E30": {
          url: "p13.html"
        },
        "E36": {
          url: "p14.html"
        },
        "E46": {
          url: "p15.html"
        }
      },
      "5 series": {
        "E34": {
          url: "p16.html"
        },
        "E39": {
          url: "p17.html"
        },
        "E60": {
          url: "p18.html"
        }
      }
    }		
  };
}
			 Последний раз редактировалось VampireFang, 28.06.2022 в 21:41.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 21:31
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| VampireFang,
   |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 21:42
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 28.06.2022 
						Сообщений: 8
					 
		
 |  |  
	| Сможете подсказать?) |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 21:43
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| VampireFang,могу, но не понимаю, о чём вы просите ... жду переводчика.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 21:59
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 28.06.2022 
						Сообщений: 8
					 
		
 |  |  
	| В общем, тут написан код зависимых списков. При выборе варианта в 3-ем списке открывается страница. Нужно убрать 3-й список и добавить на его место кнопку "Найти", которая будет запускать переход по ссылке при выборе элемента в одном или двух списках 			 Последний раз редактировалось VampireFang, 28.06.2022 в 22:14.
				Причина: Дополнение
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 22:16
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| VampireFang,увы пока ничем помочь не могу ... проблема всё та же, не знаю что вы хотите сделать.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 22:18
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| VampireFang, 
 что должно быть вместо этого и как работать?
 
<select class="app-select form-control">
  <option selected="">Выберите кузов</option>
  <option value="B3">B3</option>
  <option value="B4">B4</option>
</select>
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 22:56
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 28.06.2022 
						Сообщений: 8
					 
		
 |  |  
	| 
<div class="chained-selects">
  <select class="app-select form-control">
    <option selected>Выберите марку</option>
  </select>                          
  <select class="app-select form-control" disabled>
    <option selected>Выберите модель</option>
  </select>                          
  <button>Найти</button>                                                                  
</div>
Должно выглядеть так 
Кнопка должна выполнять переход по ссылке по заданным параметрам в select 
Задумка была такая, сделать поиск в каталоге как в примере https://smturbo.by/turbina/			 Последний раз редактировалось VampireFang, 28.06.2022 в 23:02.
 |  |  
	| 
		
	| 
			
			 
			
				28.06.2022, 23:04
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| VampireFang, 
 ок ... дознание продолжается))) 
что не так?
 
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
</head>
<body>
<div class="chained-selects">
  <select class="app-select form-control">
    <option selected>Выберите марку</option>
  </select>
  <select class="app-select form-control" disabled>
    <option selected>Выберите модель</option>
  </select>
  <button>Найти</button>
</div>
<script>
   const options = generateOptions();
const chainedSelects = document.querySelector(".chained-selects");
chainedSelects.addEventListener("change", onChange, false);
draw(chainedSelects.firstChild, options);
function onChange(event) {
  const { target } = event;
  let node = target, path = [];
  while (node = node.nextElementSibling) {
    node.length = 1;
    node.disabled = false;
  }
  if (target.selectedIndex === 0) return;
  node = target;
  do path.push(node.value);
  while (node = node.previousElementSibling);
  if (target.nextElementSibling && target.nextElementSibling.options) {
    const option = path.reduceRight((option, property) => option[property], options);
    draw(target, option);
  } else { return;
    const option = path.slice(1).reduceRight((option, property) => option[property], options);
    const value = option[target.value];
    if (value == null) return;
    location.href = value.url || value;
  }
}
function draw(target, option) {
  for (const [property, value] of Object.entries(option))
    target.nextElementSibling.add(new Option(property, property));
  target.nextElementSibling.disabled = false;
  target.addEventListener('click', function(event) {
	var target = event.target;
});
}
function generateOptions() {
  return {
    "AUDI": {
      "80": {
        "B3": {
          url: "p1.html"
        },
        "B4": {
          url: "p2.html"
        }
      },
      "100": {
        "C3": {
          url: "p3.html"
        },
        "C4": {
          url: "p4.html"
        }
      }
    },
    "BMW": {
      "3 series": {
        "E30": {
          url: "p13.html"
        },
        "E36": {
          url: "p14.html"
        },
        "E46": {
          url: "p15.html"
        }
      },
      "5 series": {
        "E34": {
          url: "p16.html"
        },
        "E39": {
          url: "p17.html"
        },
        "E60": {
          url: "p18.html"
        }
      }
    }
  };
}
</script>
</body>
</html>
 
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				29.06.2022, 00:29
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 28.06.2022 
						Сообщений: 8
					 
		
 |  |  
	| 
const options = generateOptions();
const chainedSelects = document.querySelector(".chained-selects");
chainedSelects.addEventListener("change", onChange, false);
draw(chainedSelects.firstChild, options);
function onChange(event) {
  const { target } = event;
  let node = target, path = [];
  while (node = node.nextElementSibling) {
    node.length = 1;
    node.disabled = false;
  }
  if (target.selectedIndex === 0) return;
  node = target;
  do path.push(node.value);
  while (node = node.previousElementSibling);
  if (target.nextElementSibling && target.nextElementSibling.options) {
    const option = path.reduceRight((option, property) => option[property], options);
    draw(target, option);
  } else { return;
    const option = path.slice(1).reduceRight((option, property) => option[property], options);
    const value = option[target.value];
    if (value == null) return;
    location.href = value.url || value;
  }
}
function draw(target, option) {
  for (const [property, value] of Object.entries(option))
    target.nextElementSibling.add(new Option(property, property));
  target.nextElementSibling.disabled = false;
  target.addEventListener('click', function(event) {
	var target = event.target;
});
}
function generateOptions() {
  return {
    "AUDI": {
      "80": {
        url: "p1.html"
      },
      "100": {
        url: "p1.html"
      }
    },
    "BMW": {
      "3 series": {
        url: "p1.html"
      },
      "5 series": {
        url: "p1.html"
      }
    }
  };
}
В общем плане все так. Но вот ещё. Как сделать переход по ссылке при выборе, например, AUDI 80, кликнув на кнопку "найти. Так же если выбрать просто AUDI
			
			
	
			
			
			
			
			
				  |  |  
 
 
 
 |  |