使用jQuery隐藏选择列表中的选项


Hide options in a select list using jQuery

如何隐藏不在Hotel1的房间号,并在单击提交按钮时将所选房间号发送到下一页?就像现在一样,我将被迫只发送所选酒店的id,因为我需要有selHotel选项和selroom相同的值。

我使用php, html和Sqlite数据库。Hotelrows和roomrows包含酒店表和房间表的所有行。有人能告诉我怎么才能让它工作吗?例如,当我选择1号酒店时,我可以在selroom中选择101或102房间。(对不起,如果我的英语不好,希望有人能理解我的要求。)

Hotels:
id.....Hotel
1......Hotel1
2......Hotel2
Rooms:
hid....Room#
1.......101
1.......102
2.......301

我的php/html:

<select id="selHotel" name="selH">
<option value="default" selected> Select hotel</option>
<?php
  foreach($hotelrows as $row)
  {
    echo "<option value='". $row['id'] . "'>". $row['hotelname'] . "</option>";
  }
?>
 </select>
 <select id="selroom" name="selr">
<option value="default" selected>Select room </option>
<?php
  foreach($roomrows as $row)
  {
    echo "<option value='". $row['hid'] . "'>". $row['roomnum'] . "</option>";
      }
?>
 </select>

jQuery隐藏Hotel2房间,然后我选择Hotel1:

$("#selHotel").change(function(){
        var hotelVal = $(this).find("option:selected").val();
        $('#selroom option').hide();
        $('#selroom option[value='+hotelVal+']').show();
    }); 

使用roomnum作为值,将您的hid添加为class,然后在选中时将其用作过滤器:

php:

echo "<option class='cls_". $row['hid'] . "' vlaue='".$row['roomnum']."'>". $row['roomnum'] . "</option>";

$("#selHotel").change(function(){
    var hotelVal = $(this).find("option:selected").val();
    $('#selroom option').hide();
    $('#selroom .cls_'+hotelVal).show();
    $('#selroom .cls_'+hotelVal).first().attr('selected',true);
});