2012-07-02 8 views
1

У меня есть один вопрос о jQuery. Если пользователь выбирает «Presmerovanie» со значением «0» в html select с id «typ», я хочу показать div с id «pres». Вот код:jQuery on select show div

<dl> 
    <dt><label for="typ">Typ</label></dt> 
    <dd> 
    <select id="typ" size="1"> 
     <option value="1">Normálna</option> 
     <option value="0">Presmerovanie</option> 
    </select> 
    </dd> 
</dl> 
<!-- Len ak je presmerovatelna --> 
<div id="pres" style="display: none;"> 
    <dl> 
     <dt><label for="presmerovat">Presmerovat na</label></dt> 
     <dd> 
     <select id="presmerovat" size="1"> 
      <option>Category 1</option> 
      <option>Category 2</option> 
     </select> 
     </dd> 
    </dl> 
</div> 
<!-- Koniec ak je presmerovatelna --> 

Возможно ли это?

+5

Да, возможно, но что вы пробовали? – antyrat

ответ

5
$("#typ").on("change", function() { 
    $("#pres").hide(); 

    if ($(this).val() == '0') { 
     $("#pres").show(); 
    } 
});​ 

demo

+0

его не работает :( – Geril

+0

Вы видели пример JSFiddle? –

+0

@ Проверка работоспособности Geril: вы включили jquery lib? – Rahul

0

Чтобы сделать его гибким, вы можете добавить данные атрибуты выпадающего пунктов:

<select id="typ" size="1"> 
    <option value="1" data-rel="norm">Normálna</option> 
    <option value="0" data-rel="pres">Presmerovanie</option> 
</select> 

Затем связать change событие и обрабатывать выбор:

$(document).ready(function() { 
    $("#typ").on("change", function() { 
     $(this).find("option").each(function() { 
      var rel = $(this).data("rel"); 
      if (rel && rel.length > 0) { 
       var obj = $("#" + rel); 
       if ($(this).is(":selected")) 
        obj.show(); 
       else 
        obj.hide(); 
      } 
     }); 
    }); 

    //show initial item: 
    $("#typ").change(); 
});​ 

Это будет отображаться только связанный элемент выбранного элемента и скрыть все остальные.

Live test case.

+0

также не wokring для меня:/ – Geril

+0

Итак, вы делаете что-то неправильно. Оно работает. –