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, время: 11:57. |