Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: SELECT, при выборе элемента, выполнить переход на страницу
 
 автор: web777   (26.09.2008 в 02:50)   письмо автору
 
 

имеются три селекта: страна>регион>город
при выборе страны подгружается список регионов, при выборе региона подгружается список городов, а при выборе города нужно делать переход на страницу index.php?country=1&region=2&city=3
тоесть те значения что были выбраны в трёх селектах, по ним нужно сделать переход на страницу.


вот код который я смог написать


<script type="text/javascript">
  function georedirect(){
    var get_city;
    var get_region;
    var get_country;

    get_city=city.options[city.selectedIndex].value;
    get_region=region.options[region.selectedIndex].value;
    get_country=country.options[country.selectedIndex].value;

    self.location='?country='+get_country+'&region='+get_region+'&city='+get_city;
  }
</script>




список стран

<select name="country">
  <option value="0">выбрать страну</option>
  ...
</select>



список регионов

<select name="region">
  <option value="0">выбрать регион</option>
  ...
</select>



список городов

<select name="city" onChange="georedirect();">
 <option value="0">выбрать город</option>
 ...
</select>



в IE и опере переход происходит, но вот через Mozilla Firefox 3 перход не производится, ни какой реакции нет, как сделать чтобы тоже срабатывало?

да и ещё, каждый селект имеет option со значением 0, как сделать чтобы при выборе этого элемента, в каком либо селекте, переход не производился?

  Ответить  
 
 автор: ONYX   (26.09.2008 в 09:15)   письмо автору
 
   для: web777   (26.09.2008 в 02:50)
 

<html>
<head>
</head>
<body>
<select name="country" onchange="document.getElementById('region').disabled=(this.value == 0?true:false)" id="country">
  <option value="0">выбрать страну</option> 
  <option value="1">Россия</option> 
  <option value="2">Америка</option> 
</select> 
<select name="region" disabled="disabled" onchange="document.getElementById('city').disabled=(this.value == 0?true:false)"  id="region">
  <option value="0">выбрать регион</option> 
  <option value="1">Регион 1</option> 
  <option value="2">Регион 2</option> 
</select> 
<select name="city" disabled="disabled" id="city" onChange="georedirect();">
 <option value="0">выбрать город</option> 
 <option value="1">Москва</option> 
 <option value="2">Питер</option> 
</select> 
</body>
<script type="text/javascript"> 
  function georedirect(){ 
    var get_city; 
    var get_region; 
    var get_country; 
    get_city=document.getElementById('city').options[city.selectedIndex].value; 
    get_region=document.getElementById('region').options[region.selectedIndex].value; 
    get_country=document.getElementById('country').options[country.selectedIndex].value; 
    document.location.href='?country='+get_country+'&region='+get_region+'&city='+get_city; 
  } 
</script> 
</html>

  Ответить  
 
 автор: web777   (26.09.2008 в 11:46)   письмо автору
 
   для: ONYX   (26.09.2008 в 09:15)
 

спасибо большое, код вами представлен работает как и требовалось, единственное я упустил при описании, у меня уже присутствовали id= для каждого селекта, вот как они у меня сейчас


<select name="country" id="country_id" onLoad="this.fous = false;" onChange="GeoSelectLoading(this, document.getElementById('city_id'), 'регион не выбран'); GeoSelectRegion(this, 'getregion', document.getElementById('region_id'))">

<select name="region" id="region_id" disabled="disabled" class="disabled" onChange="GeoSelectRegion(this, 'getcity', getElementById('city_id'));">

<select name="city" id="city_id" disabled="disabled" class="disabled" onChange="georedirect();">


тут видно что уже у каждого селекта имеются id="country_id", id="region_id", id="city_id" они нужны для подгрузки списка городов, регионов, из-за этого пришлось в вашем коде немного подправить, заменив country, region, city на country_id, region_id, city_id


  function georedirect(){
    var get_city;
    var get_region;
    var get_country;
    get_city=document.getElementById('city_id').options[city_id.selectedIndex].value;
    get_region=document.getElementById('region_id').options[region_id.selectedIndex].value;
    get_country=document.getElementById('country_id').options[country_id.selectedIndex].value;
    document.location.href='?country='+get_country+'&region='+get_region+'&city='+get_city;
  }


при запуске скрипта, переход не срабатывает, IE сообщяет что "Требуется объект"

видимо получается путаница на id= происходят два события, поэтому наверное происходит конфликт, можно както решить эту задачу?

  Ответить  
 
 автор: elenaki   (26.09.2008 в 11:50)   письмо автору
 
   для: web777   (26.09.2008 в 11:46)
 

name="country" id="country_id" => name="country_id" id="country_id"
onLoad="this.fous = false;" => onLoad="this.foCus = false;"

  Ответить  
 
 автор: web777   (26.09.2008 в 11:59)   письмо автору
 
   для: elenaki   (26.09.2008 в 11:50)
 

сейчас изменил как вы предложили, получилось так


<select name="country_id" onLoad="this.focus = false;" onChange="GeoSelectLoading(this, document.getElementById('city_id'), 'регион не выбран'); GeoSelectRegion(this, 'getregion', document.getElementById('region_id'))">


в IE теперь всё как и должно, а вот в опере и Firefox3 редирект не происходит

упс, ивиняюсь, пропустил написать id="country_id"
теперь всё работает, вот только заметил, при выборе допустим региона или страны со значение 0 , то переход производится, но оно и понятно, т.к. у меня нет сейчас проверки, я незнаю как его сделать его по скольку у меня уже применяется onChange, хотя наверное это нужно уже делать внутри функции georedirect() сейчас попробую если получится

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования