【问题标题】:keep selected values in select box field after search搜索后将所选值保留在选择框字段中
【发布时间】:2017-09-15 15:05:18
【问题描述】:

我想在搜索后将所选值保留在选择框中。这是一个车辆搜索过滤页面,页面使用 php 编码并与数据库连接。

数据库有 2 列用于两个选项,即 21-24 岁的司机年龄和 25 岁以上的司机年龄,因为某些车辆也适用于这两个年龄的司机

代码如下

<script>
$('#driver').change(function() {
  if($('#driver option:selected').val() == '21-24') {
    $('#driver').attr('name','driverage');
  }

  if($('#driver option:selected').val() == '25+') {
    $('#driver').attr('name','driver_age'); 
  }
});
</script>

<form id="myform" method="GET" action="">
  <div class="fields">
    <p>Vehicle Type</p>
    <select class="car" name="car_type" id="car_type">
      <option value="0">Select Vehicle</option>
      <?php if(count($vehicleType) > 0 ){
        foreach($vehicleType as $vt){ ?>
          <option value="<?php echo $vt ?>" <?=isset($_GET['car_type'])&&$_GET['car_type']==$vt?'selected':'';?> ><?php echo $vt ?></option>
          <?php }

      } ?>
    </select>
  </div>

  <div class="fields">
    <p>Age of Youngest Driver</p>
    <select class="half" id="driver" name="">
      <option value="21-24">21-24</option>
      <option value="25+">25+</option>        
    </select>
  </div>

  <input type="hidden" name="search" />
  <div class="fields" style="text-align:center">
    <input type="submit" value="Search" class="mitsub" />
  </div>    
</form>

谢谢,请帮忙

【问题讨论】:

  • 你有提交按钮吗?,告诉我们表单是如何发送的,以及什么返回php
  • @SilverSurfer 我更新了我的问题,请检查
  • 为什么不把名字attr直接放在html标签上?
  • @NeerajMishra 没有选择两者的选项,你说有些车辆可以同时使用,那怎么可能?为此,您需要将选择框更改为多个,还有一件事为什么要更改选择框的名称,例如 driverage 和 driver_age?
  • @SilverSurfer 因为它有两个名字,分别是 driverage 和 driver_age

标签: php jquery


【解决方案1】:

您可以在foreach() 中添加一个条件语句,将selected 属性添加到option。这将确保选择的值在选项列表中被选中。

<?php
if(count($vehicleType) > 0 ){
  foreach($vehicleType as $vt){
    echo "<option value='$vt'";
    if(isset($_GET['car_type']) && $_GET['car_type'] == $vt){
      echo " selected";
    }
    echo ">$vt</option>\r\n";
  }
}
?>

您可以一次性完成所有操作,您只需确保逻辑正确即可。

echo "<option value='$vt'" . ((isset($_GET['car_type'] && $_GET['car_type'] == $vt) ? " selected" : "") . ">$vt</option>\r\n";

我发现使用完整的if 语句更容易。

【讨论】:

  • 实际上它对我来说很好用,唯一的问题是驱动程序字段的年龄,因为这个字段在数据库中有两列是驱动程序和驱动程序_年龄。请检查数据库的屏幕截图..prntscr.com/gldmh2跨度>
  • 检查这个prntscr.com/gldncu 这是当我选择值 25+ 并且单击搜索后它工作正常但是当我再次单击搜索时它就像这样 prntscr.com/gldo6p
猜你喜欢
  • 1970-01-01
  • 2014-04-15
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多