如何根据所选选项的ID来显示/隐藏div?

时间:2015-08-09 12:33:21

标签: javascript php html show

我有5行的车辆发票表格。每行可以是不同的车辆,但如果选择了汽车,它会显示第二个选择列表以选择其颜色。

这是我的javascript:

<script>
    $(document).ready(function() {
        $("#select1").change(function(event) {
            var id = $(event.target).id();

            $("#" + id).show();
        });
    });
</script>

这是我的表格:

  <form name="invoice" action="invoice.php">
  <table border="1">
    <tr>
        <td>SN</td>
        <td>Vahicle Type</td>
        <td>Quantity</td>
    </tr>


      <?php $sn = 1 ;
       while ($sn < 5){ ?>

    <tr>
        <td>
            <?php echo $sn ?>
        </td>
        <td>
              <select name="vehicles[]" id="select1">
                  <option id="0" value="0">Select Vehicle</option>
                  <option id="<?php echo $sn ?>" value="toyota" name="toyota">Toyota</option>
                  <option id="<?php echo $sn ?>" value="nissan" name="nissan">Nissan</option>
                  <option id="<?php echo $sn ?>" value="BMW" name="bmw">BMW</option>
                  <option id="0" value="plane" name="plane">Plane</option>
                  <option id="0" value="boat" name="boat">Boat</option>
                  <option id="0" value="bike" name="bike">Bike</option>

              </select>    

          <div id="<?php echo $sn ?>" class="toggleable" style="display:none;">
              <select name="color[]" id="select2">
                  <option id="<?php echo $sn ?>" value="red" name="red">Red</option>
                  <option id="<?php echo $sn ?>" value="black" name="black">Black</option>
                  <option id="<?php echo $sn ?>" value="white" name="white">White</option>          
              </select>    
          </div>

        </td>

        <td>
            <input type="number" name="quantity[]">
        </td>
    </tr>

            <?php $sn=$sn+1; } ?>
</table>
</form>

我用javascript不太好。我通过从在线示例中学习来编写此代码,但它不起作用。

2 个答案:

答案 0 :(得分:1)

正如tomas_b所说,你应该使用 data - * 属性。元素ID在文档中必须是唯一的,如果您复制它们,那么 getElementById 将只返回第一个(主要是)。

如果侦听器在select元素上,那么它将在函数中 this ,可以直接访问其属性。也很少需要为已经具有名称的表单控件添加ID,并且select元素应始终具有一个带有selected属性的选项,以便您知道默认情况下将选择一个。

所以你可以这样做:

window.onload = function() {
  document.getElementById('select1').onchange = handleVehicleChange;
}

function handleVehicleChange() {
  var opt = this.options(this.selectedIndex);
  document.getElementById('carTypes').style.display = opt.getAttribute('data-type') == 'car'? '' : 'none';
}
     <select name="vehicles[]" id="select1">
        <option id="0" value="0" selected>Select Vehicle</option>
        <option data-type="car" value="toyota">Toyota</option>
        <option data-type="car" value="nissan">Nissan</option>
        <option data-type="car" value="BMW">BMW</option>
        <option data-type="aeroplane" value="plane">Plane</option>
        <option data-type="boat" value="boat">Boat</option>
        <option data-type="bike" value="bike">Bike</option>
    </select>    

    <div id="carTypes" class="toggleable" style="display:none;">
      <select name="color[]" id="select2">
        <option value="red">Red</option>
        <option value="black">Black</option>
        <option value="white">White</option>          
      </select>
    </div>

答案 1 :(得分:0)

获取所选选项的值&#34; id&#34;使用jQuery属性,您可以使用以下jQuery代码段

var id = $("#select1 > option:selected").attr('data-id');

查看实际操作:http://plnkr.co/edit/bWj0MzLey0n4dkI03bs1?p=preview

此处的查询只是使用&#34;:select&#34;来获取所选选项。选择器(https://api.jquery.com/category/selectors/)。

但是,如示例中所示,您应该为选项标记使用不同的属性名称,例如&#34; data-id&#34;,as&#34; id&#34;有它的目的。