связанный селект ссылка syncList.dataList
Доброго времени суток, форумчане.Я здесь новый , не пинайте ногами-помогите делом. :agree:
Существует скрипт, который меня полностью устраивает.:write: Есть одно "но" - не могу понять как сделать кнопку, которая будет отправлять пользователя на страницу по ссылке, привязаной к конкретному пункту селекта из syncList1.dataList . Т.е я пытаюсь сделать кнопку, нажав по которой пользователь перейдет по ссылке на выбранный элемент из списка. Пытаюсь через window.location='new_url';т.е примерно так onchange="window.location.href=this.options[this.selectedIndex].value;". Не получается. Прошу помощи. :thanks: вот Разметка 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(); }; |
Ну что, никто не сможет?
Неделю мучаюсь, чесслово!!! очень нужен скрипт.
|
<select id="list"> <option value="google.ru">google.ru</option> <option value="yandex.ru">yandex.ru</option> </select> <a href="#" title="" onclick="openURL(); return false;">Открыть</a> <script type="text/javascript"> function openURL(){ var select = document.getElementById('list'); //window.location = 'http://'+objSel.options[objSel.selectedIndex].value; window.open('http://'+select.options[select.selectedIndex].value, 'Window title'); } </script> Вот пример, от него и "плящите". |
Подскажите, пожалуйста, как под каждым из списков выводить текст выбранного value?
То есть, чтобы в итоге получить строку "Результат1 Результат2 Результат3" Спасибо! |
Часовой пояс GMT +3, время: 06:16. |