根据选择的选项显示3个div中的一个

时间:2013-12-23 16:56:26

标签: javascript jquery html css

我有一个带有3个选项主体,力量,距离的选择框。我想使用javascript / jquery来显示div,具体取决于选择了哪些选项。到目前为止,我刚刚按下按钮http://codepen.io/Irish1/pen/iwKam

HTML

<form>
  <p>
    <label for="select">
      Goal Type
    </label>
    <select class="typeselect">
      <option value=""></option>
      <option value="body">
        Body
      </option>
      <option value="strength">
        Strength
      </option>
      <option value="distance">
        Distance
      </option>
    </select>
    <button class="toggle">push</button>
  </p>
  <div class="body">
    <p>
      <label for="body">
       Body
      </label>
    </p>
  </div>
  <div class="strength">
    <p>
      <label for="strength">
        Strength
      </label>
    </p>
  </div>
  <div class="distance">
    <p>
      <label for="distance">
       Distance
      </label>
    </p>
  </div>


</form>

CSS

.body {
  display: none;
}

.strength {
  display: none;
}

.distance {
  display: none;
}

的javascript

$('.toggle').click(function(){
  $('.body').toggle();
});

4 个答案:

答案 0 :(得分:4)

尝试

//dom ready handler
jQuery(function () {
    //all the elements that has to be shown/hidden, it is cached for easy access later
    var $targets = $('.body, .strength, .distance');

    //chang handler for the select element
    $('.typeselect').change(function () {
        //hide previously displayed elements
        $targets.hide()

        //find the element with the selected option's value as class, if empty option is selected set it to an empty set
        if (this.value) {
            $('.' + this.value).show()
        }
    })
})

演示:Fiddle

如果你想使按钮处理程序工作,那么

//dom ready handler
jQuery(function () {
    //all the elements that has to be shown/hidden, it is cached for easy access later
    var $targets = $('.body, .strength, .distance');

    var $select = $('.typeselect');

    //click handler for the button
    $('.toggle').click(function (e) {
        //prevent the default form action of the button click
        e.preventDefault();

        //hide previously displayed elements
        $targets.hide()

        //selected value
        var val = $select.val();
        //find the element with the selected option's value as class, if empty option is selected set it to an empty set
        if (val) {
            $('.' + val).show()
        }
    })
})

演示:Fiddle

答案 1 :(得分:3)

$('#typeselect').change(function(event) {
   $('.target').hide();
   var option = $(this).val();
   if (option != "") $('.'+option).show();
});

和html的一些小修改

<form>
  <p>
    <label for="select">Goal Type</label>
    <select id="typeselect" class="typeselect">
      <option value=""></option>
      <option value="body">Body</option>
      <option value="strength">Strength</option>
      <option value="distance">Distance</option>
    </select>
  </p>
  <div class="body target">
    <p><label for="body">Body</label></p>
  </div>
  <div class="strength target">
    <p><label for="strength">Strength</label></p>
  </div>
  <div class="distance target">
    <p><label for="distance">Distance</label></p>
  </div> 
</form>

您可以在codepen上查看和编辑:http://codepen.io/anon/pen/ktesh

答案 2 :(得分:0)

试试这个:

$('.typeselect').change(function(){
   $('div').hide();
   if($(this).val() == ""){
      $(this).children('option:first-child').show();
   }
   else
      $('.' + $(this).val()).show();
});

答案 3 :(得分:0)

为Select和Div提供名称/ ID。

var x = document.getElementById("SelectId / Name").selected;

    if(x==0) {
        document.getElementById("body").style.display = "block";
    } else {
        \\ Similarly for other div to display on the basis of x
    }