Доброго времени суток, форумчане.Я здесь новый , не пинайте ногами-помогите делом.
Существует скрипт, который меня полностью устраивает.
Есть одно "но" -
не могу понять как сделать кнопку, которая будет отправлять пользователя на страницу по ссылке, привязаной к конкретному пункту селекта из syncList1.dataList .
Т.е я пытаюсь сделать кнопку, нажав по которой пользователь перейдет по ссылке на выбранный элемент из списка.
Пытаюсь через
window.location='new_url';
т.е примерно так
onchange="window.location.href=this.options[this.selectedIndex].value;"
. Не получается. Прошу помощи.
вот Разметка HTML
<html>
<head>
<title>Связанные селекты</title>
<!-- Подключаем javascript-библиотеку функций -->
<script type="text/javascript" src="linkedselect.js"></script>
</head>
<body>
<!-- Первый (главный) список (изначально заполнен вручную) -->
<select id="List1">
<option value="empty"> Выберите категорию </option>
<option value="50cc"> 50cc </option>
</select>
<!-- Подчиненный список 1 (изначально пуст) -->
<select id="List2"></select>
<!-- Подчиненный список 2 (изначально пуст) -->
<select id="List3"></select>
<script type="text/javascript">
// Создаем новый объект связанных списков
var syncList1 = new syncList;
// Определяем значения подчиненных списков (2 и 3 селектов)
syncList1.dataList = {
/* Определяем элементы второго списка в зависимости
от выбранного значения в первом списке */
'50cc':{
'50cc_empty':'Выберите марку',
'50cc_yamaha':'Yamaha',
'50cc_honda':'Honda'
},
/* Определяем элементы третьего списка в зависимости
от выбранного значения во втором списке */
'50cc_yamaha':{
'50cc_yamaha_empty':'Выберите модель',
'50cc_yamaha_jog':'jog',
'50cc_yamaha_aerox':'aerox'
},
'50cc_honda':{
'50cc_honda_empty':'Выберите модель',
'50cc_honda_dio':'dio',
'50cc_honda_giorno':'giorno'
}
};
// Включаем синхронизацию связанных списков
syncList1.sync("List1","List2","List3");
</script>
</body>
</html>
И собственно файл linkedselect.js
function syncList(){}
syncList.prototype.sync = function()
{
for (var i=0; i < arguments.length-1; i++) document.getElementById(arguments[i]).onchange = (function (o,id1,id2){return function(){o._sync(id1,id2);};})(this, arguments[i], arguments[i+1]);
document.getElementById(arguments[0]).onchange();
}
syncList.prototype._sync = function (firstSelectId, secondSelectId)
{
var firstSelect = document.getElementById(firstSelectId);
var secondSelect = document.getElementById(secondSelectId);
secondSelect.length = 0;
if (firstSelect.length>0)
{
var optionData = this.dataList[ firstSelect.options[firstSelect.selectedIndex==-1 ? 0 : firstSelect.selectedIndex].value ];
for (var key in optionData || null) secondSelect.options[secondSelect.length] = new Option(optionData[key], key);
if (firstSelect.selectedIndex == -1) setTimeout( function(){ firstSelect.options[0].selected = true;}, 1 );
if (secondSelect.length>0) setTimeout( function(){ secondSelect.options[0].selected = true;}, 1 );
}
secondSelect.onchange && secondSelect.onchange();
};