Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2012, 21:58
Новичок на форуме
Отправить личное сообщение для pavolve Посмотреть профиль Найти все сообщения от pavolve
 
Регистрация: 01.05.2012
Сообщений: 3

Не реагирует на изменение 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 ставил, та же реакция реакция только на страну (
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2012, 23:24
Новичок на форуме
Отправить личное сообщение для pavolve Посмотреть профиль Найти все сообщения от pavolve
 
Регистрация: 01.05.2012
Сообщений: 3

Я вот думаю, может когда я заменяю HTML то связи с js пропадают?
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2012, 02:15
Аватар для archcoffe
Интересующийся
Отправить личное сообщение для archcoffe Посмотреть профиль Найти все сообщения от archcoffe
 
Регистрация: 10.04.2012
Сообщений: 19

волею судьбы недавно тоже этим вопросом занимался по мануалу


$('#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 функцию, - может я и не прав, но подумалось так..

Последний раз редактировалось archcoffe, 02.05.2012 в 02:32.
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2012, 11:57
Новичок на форуме
Отправить личное сообщение для pavolve Посмотреть профиль Найти все сообщения от pavolve
 
Регистрация: 01.05.2012
Сообщений: 3

Может быть вы и правы с одной .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)

Последний раз редактировалось pavolve, 02.05.2012 в 12:20.
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2012, 13:25
Аватар для archcoffe
Интересующийся
Отправить личное сообщение для archcoffe Посмотреть профиль Найти все сообщения от archcoffe
 
Регистрация: 10.04.2012
Сообщений: 19

Если вы хотите использовать это, тогда нужно разобраться с урлами и html-ом и будет работать. А "<? base_url() ?>" это php , уберите и поставьте туда ваш адрес сайта. Шикарный вид))
-
несколько известных мне путей:
1. Передать значение селекта в урле (в моем примере это так), т.е обзываете и пихаете в урл ваш val() , а на php доберетесь через GET.

2. Передать постом - в таком случае урл это адрес вашего php контроллера,
просто передаете нужный val() как в вашем коде это делаеться и все, а на стороне php через POST смотрите.

замечания:
- если вы используете традиционный GET тогда и запрос должен иметь приемлемый вид.
- второй метод все же как по мне удобней
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение значения input при смене значения select galart jQuery 4 30.01.2015 19:39
Как сохранить предыдущее значение select? MaxD Общие вопросы Javascript 3 21.07.2011 12:36
Помогите с зависящими select RevivaL Общие вопросы Javascript 10 15.12.2010 14:37
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31
Функция eq(i).mouseover(function(){...}) не реагирует на изменение i... oxymo jQuery 0 19.09.2009 22:31