Не реагирует на изменение select
Здравствуйте, возникла проблема (
Делаю пошаговое заполнение местоположения, те сначала страна потом регион потом город. Так вот при выборе страны все срабатывает и вставляется список регионов, а при выборе региона реакции 0, код аналогичный, что происходит не имею понятия ( Помогите Код Jquery $(document).ready(function() { /* SMART COUNTRY, REGION, CITY */ $("#countries select").change(function() { var country_id = $(this).val(); $.post("http://localhost:8888/carzap/index.php/location/region", { country_id: country_id }, function(regions) { $("#regions").html("<label>В каком регионе?</label>" + regions) }); }); $("#regions select").change(function() { alert('region_id'); var region_id = $(this).val(); $.post("http://localhost:8888/carzap/index.php/location/city", { region_id: region_id }, function(cities) { $("#city").html("<label>В каком городе?</label>" + cities) }); }); }); Код HTML <section id="countries"> <label>В какой вы стране?</label> <?php echo $countries;?> </section> <section id="regions"> <label>В каком регионе?</label> <select disabled="disabled"> <option>Регион</option> </select> </section> <section id="city"> <label>В каком городе?</label> <select disabled="disabled"> <option>Город</option> </select> </section> И в select id ставил, та же реакция реакция только на страну ( |
Я вот думаю, может когда я заменяю HTML то связи с js пропадают?
|
волею судьбы недавно тоже этим вопросом занимался по мануалу
$('#country_id').change(function () { var country_id = $(this).val(); if (country_id == '0' ) { $('#region_id').html(''); $('#region_id').attr('disabled', true); return(false); } if ( country_id == 'NULL' || $('#city_id').val() >'0') { $('#city_id').html(''); $('#city_id').attr('disabled', true).html('<option>нет городов</option>'); } $('#region_id').attr('disabled', true); $('#label_region').hide(); $('#region_id').html('<option value="0" >нет регионов</option>'); var url = '<?=base_url()?>arka/view/country/'+country_id; $.post( url, function (result) { if (result.type == 'error') { alert('error'); return(false); } else { var options = ''; $(result.regions).each(function() { options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>'; }); $('#region_id').html(options); $("#region_id").attr('disabled', false); } }, "json" ); }); $('#region_id').change(function () { var region_id = $(this).val(); if (region_id == '0' ) { $('#city_id').html(''); $('#city_id').attr('disabled', true); return(false); } var url = '<?=base_url()?>arka/view/region/'+region_id; $.post( url, function (result) { if (result.type == 'error') { alert('error'); return(false); } else { var options = ''; $(result.city).each(function() { options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>'; }); $('#city_id').html(options); $("#city_id").attr('disabled', false); } }, "json" ); }); Это у меня работает на тестовом.. После того как я это сделал, принялся делать другие подобные запросы.. И вы знаете что после этого думаю? - подход с двумя change функциями как то не очень().. Хочется сделать все в одну change функцию, - может я и не прав, но подумалось так.. |
Может быть вы и правы с одной .change функцией, но а с другой стороны, тогда внутри нее нужно ставить условия которые бы распознавали что именно change ) и в зависимости от этого что-то делать, на мой взгляд одно и то же, только читаемость будет хуже )
И вот я смотрю на ваш код и увидел <?=base_url()?> почему-то мой js ругается на это ( может потому что localhost, но это не логично, пришлось ставить полный путь, может подскажете что-то? Вот такую ошибку в консоли пишет: %3C?=base_url()?%3E/location/region Failed to load resource: the server responded with a status of 404 (Not Found) |
Если вы хотите использовать это, тогда нужно разобраться с урлами и html-ом и будет работать. А "<? base_url() ?>" это php , уберите и поставьте туда ваш адрес сайта. Шикарный вид))
- несколько известных мне путей: 1. Передать значение селекта в урле (в моем примере это так), т.е обзываете и пихаете в урл ваш val() , а на php доберетесь через GET. 2. Передать постом - в таком случае урл это адрес вашего php контроллера, просто передаете нужный val() как в вашем коде это делаеться и все, а на стороне php через POST смотрите. замечания: - если вы используете традиционный GET тогда и запрос должен иметь приемлемый вид. - второй метод все же как по мне удобней |
Часовой пояс GMT +3, время: 21:02. |