Nexus,
Да всё чотко код приписывает параметр для Селект. Одна проблема он приписывает его для всех Селект кто в форме. А как сделать чтобы только для cp_state, другим не нужно? Для всех можно еще вот здесь прописать: в файле custom-forms.php $field_class = ( $result->field_req ) ? 'dropdownlist required' : 'dropdownlist'; $args = array( 'name' => $result->field_name, 'id' => $result->field_name, 'class' => $field_class, 'onchange' => 'CityList(this)' ); Пробовал так, он на всех Селектах приписывает onchange="CityList(this);" |
rdPavel, верни все как было, а перед функцией CityList напиши следующее:
window.onload=function(){ window.document.getElementById('cp_state').onchange=function(e){ CityList(e.target); }; }; if(window.document.readyState=='complete') window.dispatchEvent(new Event('load')); |
Nexus,
Я ваш код обязательно проверю. Я прошлый немного доработал, в принципе работает отлично Одну строчку изменил: $select=str_replace('cp_state','cp_state" onchange="getCityList(this);" ',$select); echo $select; Весь смысл в двойной " после cp_state |
Или всё таки вернуть всё обратно и:
window.onload=function(){ window.document.getElementById('cp_state').onchang e=function(e){ CityList(e.target); }; }; if(window.document.readyState=='complete') window.dispatchEvent('load',new Event('load')); |
rdPavel, не мне решать, но лучше заюзать второй вариант, правда я его не тестил.
|
Nexus,
Код второй что-то не идет... Спасибо большое за идею и направление в решении проблемы. |
rdPavel, методу dispatchEvent передается только 1 аргумент - экземпляр "класса" Event, свой комментарий я поправил.
|
Nexus,
Всё чотко, большое спасибо! В коде в браузере даже аргумента не видно, но он работает. :) Подскажите хорошую книжку по JS и PHP, надо бы углубляться, ну и разумеется практика и практика. |
rdPavel, к моему стыду книг я посоветовать не могу, ибо ни одну даже не начинал читать.
Возможно кто-нибудь другой вам что посоветует. |
Nexus,
Добрый день! Можете подсказать из-за чего могут конфликтовать эти два кода. Один отключу второй работает и на оборот. Эти оба на одной форме. Обработчик cp_state.js var ajax = new Array(); window.onload=function(){ window.document.getElementById('cp_state').onchange=function(e){ getCityList(e.target); }; }; if(window.document.readyState=='complete') window.dispatchEvent(new Event('load')); function getCityList(sel) { var countryCode = sel.options[sel.selectedIndex].value; document.getElementById('cp_region').options.length = 0; if(countryCode.length>0){ var index = ajax.length; ajax[index] = new sack(); ajax[index].requestFile = 'http://***/sel/baza/cp_state.php?countryCode='+countryCode; ajax[index].onCompletion = function(){ createCities(index) }; ajax[index].runAJAX(); } } function createCities(index) { var obj = document.getElementById('cp_region'); eval(ajax[index].response); } Обработчик cp_avto.js var ajax = new Array(); window.onload=function(){ window.document.getElementById('cp_id_387').onchange=function(e){ getAvtoList(e.target); }; }; if(window.document.readyState=='complete') window.dispatchEvent(new Event('load')); function getAvtoList(sel) { var countryCode2 = sel.options[sel.selectedIndex].value; document.getElementById('cp_id_928').options.length = 0; if(countryCode2.length>0){ var index = ajax.length; ajax[index] = new sack(); ajax[index].requestFile = 'http://***/sel/baza/cp_avto.php?countryCode2='+countryCode2; ajax[index].onCompletion = function(){ createCities2(index) }; ajax[index].runAJAX(); } } function createCities2(index) { var obj = document.getElementById('cp_id_928'); eval(ajax[index].response); } База, у каждого своя, может её в общую согнать? |
Часовой пояс GMT +3, время: 22:16. |