С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Покури jQuery, очень рекомендую. Там все просто.
Я не проверял, мог и накосячить. Но принцип такой.Код HTML:<script src="/scripts/jquery/jquery.js" type="text/javascript"></script> <script type="text/javascript">/*<![CDATA[*/ $(document).ready(function(){ $("#submit_form").click(function(){ $.ajax({ 'success': function(data) { $("#result").html("data"); }, 'url': 'скриптдлябазы.php', 'data': $("#form").serialize(), 'type': 'POST', 'cache':false }); }); }); /*]]>*/</script> <form id="authors_form"> ... здесь список данных, которые отправляются в скриптдлябазы.php через POST-запрос ... </form> <div id="submit_form">Отправить данные</div> <div id="result">Вместо этого текста будет подставлено всё, что нарисует скриптдлябазы.php</div>
Можно даже проще, через $.post() например.
Спектрумист, более менее умеющий форматировать дискеты на реале.
Такс, как я понимаю, странички у тебя генерирует РНР, значит получаеш список авторов оригиналов, т.е. их ID и подставляеш их в select:
Далее когда пользователь выберет автора оригинала обработчик onChange вызовет JavaScript функцию updateRemixesList();PHP код:<select id="orig_authors" onchange="updateRemixesList();"><?php
foreach ( $authors as $author ) { ?>
<option value="<?php echo $author['id']; ?>"><?php echo $author['name']; ?></option>
<?php } ?></select>
Теперь server side получил Id автора оригинала и мы можем получить список ремиксов. Получаем список ремиксов (или авторов ремиксов, уже забыл пока писалКод:function updateRemixesList() { var orig_authors_select = document.getElemntById('orig_authors'); //получаем объект selecta if ( orig_authors_select ) { orig_author_id = orig_authors_select.options[orig_authors_select.selected_index].value;//Получаем текущее выбраное значение //Далее делаем запрос аяксом, т.е. отправляем orig_author_id } else alert('It is a bad day today...'); }), формируем XML или текст для ответа (ответ приходит обратно в JavaScript)
Будем считать что ответ от аякса мы удачно получили и у нас есть некий массив с авторами ремиксов и этот список нужно вывести во второй выпадающий список, делаем следующее:
в том месте где должен быть выпадающий список ставим:
<select id="remix_authors"></select>
Далее допустим что авторов ремиксов добавляет функция addRemixAuthors()
Ну и последняя функция:Код:function addRemixAuthors() { var remix_authors_select = document.getElementById('remix_authors'); if (remix_authors_select) { //Удаляем старый список if ( remix_authors_select.options.length > 0 ) { for (i=0;i<remix_authors_select.options.length;i++) { remix_authors_select.removeChild(remix_authors_select.options[i]); } } //Добавляем новые элементы for (i=0;i<authors.length;i++) { var el = elem('option', {'value', authors[i][1]/*id*/}, null, authors[i][0]/*name*/); remix_authors_select.appendChild( el ); } } }
Код:function elem(name, attrs, style, text, evthandlers) { var e = document.createElement(name); if (attrs) { for (key in attrs) { if (key == 'class') { e.className = attrs[key]; } else if (key == 'id') { e.id = attrs[key]; } else { e.setAttribute(key, attrs[key]); } } } if (style) { for (key in style) { e.style[key] = style[key]; } } if (text) { e.appendChild(document.createTextNode(text)); } if (evthandlers) { for (key in evthandlers) { //alert(evthandlers[key]); //alert(key); if(window.addEventListener) { // Mozilla, Netscape, Firefox e.addEventListener(key, evthandlers[key], false); } else { // IE e.attachEvent('on'+key, evthandlers[key]); } } } return e; }
Последний раз редактировалось Keeper; 13.01.2009 в 00:03.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)