21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
r0me0
Profil
Zdravím,

potřebuji udělat select pro jednotlivé kraje a po zvolení kraje by se zobrazil okres. Dělám to tak, že si v php vytáhnu z db všechny kraje, vytvořím pro ně selecty s okresy a nechám jim display:none, potom jsem napsal js funkci, které pošlu id kraje a ona mi zobrazí select s požadovanými okresy tím, že změní display na block. Ovšem nevím, jak ten select s okresy zase vrátit na display:none, pokud si to uživatel rozmyslí a zvolí jiný kraj.
Za pomoc děkuju.

<?php
 $sql_kraje1 = mysql_query("SELECT id,nazev 
                           FROM crn_kraje");
    $select_kraj .= '<form method="post" action="">';
    $select_kraj .= '<select name="kraj" id="kraj" onchange="zobraz_select(\'kraj\')">';
       $select_kraj .= '<option value="0"> - vyberte - </option>';
      while($kraje =  mysql_fetch_array($sql_kraje1))
      {
      $select_kraj .= '<option value="'.$kraje['id'].'">'.$kraje['nazev'].'</option>';
      }
    $select_kraj .= '</select>';
     $select_kraj .= '<form>';
     
  echo $select_kraj;  
    
  $sql_kraje2 = mysql_query("SELECT id,nazev
                             FROM crn_kraje");
    
     while($k = mysql_fetch_array($sql_kraje2))
     {
      $sql_okres = mysql_query("SELECT id,nazev
                                FROM crn_okresy
                                WHERE kraj = ".$k['id']."
                                ORDER BY nazev");
          
          $vypis .= '<select name="kraj_'.$k['id'].'" style="display:none" id="kraj_'.$k['id'].'">';
            while($o = mysql_fetch_array($sql_okres))
            {
            $vypis .= '<option value="'.$o['id'].'">'.$o['nazev'].'</option>';
            }
          $vypis .= '</select>';
     }
     echo $vypis;
?>

<script>
function zobraz_select(id_formulare)
  {
    var id_selectu;
    var id;
    
    if(document.getElementById(id_formulare).value != 0)
    {
    id = document.getElementById(id_formulare).value;
    id_selectu = id_formulare+'_'+id;
    el = document.getElementById(id_selectu).style.display = "block";
    }
  }
</script>
Molda
Profil
Něco podobnýho sem řešil ,položky druhýho selectu jsou v tom javascriptu a podle volby v prvním se mění

<select id="parent0_1">                
        <option value="1">Vyber </option>              
        <option value="2">CD</option>    
        <option value="3">DVD</option>
</select>
 <select id="parent0_2">          
</select>

$("#parent0_1").change(function(){
                s1 = $('#parent0_1').val();
                switch (s1) {
                  case '1' : $("#parent0_2").html('<option class="sub_1" value="vyber">Nejprve vyber</option>');break;
                  case '2' : $("#parent0_2").html('<option class="sub_1" value="jazz">Jazz</option><option class="sub_1" value="rock">Rock</option>');break;
                  case '3' : $("#parent0_2").html('<option class="sub_2" value="horor">Horor</option><option class="sub_2" value="pohadka">Pohádka</option>');break;  
                  default : ;
                  } 
});
Jan Tvrdík
Profil
Molda:
Rvát to do JS mi nepřijde jako ideální řešení.

r0me0:
Zkus upravit ten JS nějak takto:
var zobrazeno;
function zobraz_select(id_formulare)
{
	var id_selectu;
	var id;

	if (document.getElementById(id_formulare).value != 0)
	{
		id = document.getElementById(id_formulare).value;
		id_selectu = id_formulare + '_' + id;
		
		if (zobrazeno) document.getElementById(zobrazeno).style.display = "none";
		zobrazeno = id_selectu;
		document.getElementById(id_selectu).style.display = "block";
	}
}
r0me0
Profil
Jan Tvrdík:
super, funguje, díky :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0