繁体   English   中英

如何在Form POST或GET之后保留选择框的选定值

[英]How to Keep the selected value of the select box after Form POST or GET

我试图在我的网站上实现搜索功能。

当在文本框中输入搜索关键字并选择类别组合时,表单将被过帐,结果将显示在同一页面上。

我想要的是在发布后默认将组合的选定类别保留在表单中

例如,如果我在组合中选择类别“汽车”,然后单击搜索,则在提交表单后,组合应将汽车显示为默认选择的选项。 请帮我。 任何帮助将不胜感激

我假设您从数据库中获取类别。

你应该试试:

<?php

$categories = $rows; //array from database
foreach($rows as $row){
     if($row['name'] == $_POST['category']){
          $isSelected = ' selected="selected"'; // if the option submited in form is as same as this row we add the selected tag
     } else {
          $isSelected = ''; // else we remove any tag
     }
     echo "<option value='".$row['id']."'".$isSelected.">".$row['name']."</option>";
}
?>

假定“组合”是指“将常规选择元素呈现为下拉菜单或列表框”,而不是“组合下拉菜单和自由文本输入的组合框”:

输出<option>元素时,请对照$_POST / $_GET中的已提交数据检查该值,并输出selected (在HTML中)或selected="selected" (在XHTML中)作为option元素的属性。

这是我使用的JQuery方式。

<select name="name" id="name">
  <option value="a">a</option>
  <option value="b">b</option>
</select>

<script type="text/javascript">
   $("#name").val("<?php echo $_POST['name'];?>");
</script>

但这仅在您的网页中包含jquery的情况下。 问候

<?php
$example = $_POST["friend"];
?>
<form method="POST">
<select name="friend">
   <option value="tom" <?php if (isset($example) && $example=="tom") echo ' selected';?>>Thomas Finnegan</option>
   <option value="anna" <?php if (isset($example) && $example=="anna") echo ' selected';?>>Anna Karenina</option>
</select>
<br><br>
<input type="submit">
</form>

这解决了我的问题。

$countries_uid = $_POST['countries_uid'];
                while($row = mysql_fetch_array($result)){
                  $uid = $row['uid'];
                  $country = $row['country_name'];
                  $isSelected = null;
                    if(!empty($countries_uid)){
                    foreach($countries_uid as $country_uid){//cycle through country_uid
                       if($row['uid'] == $country_uid){
                        $isSelected = 'selected="selected"'; // if the option submited in form is as same as this row we add the selected
                       }
                    }
                   }else {
                    $isSelected = ''; // else we remove any tag
                  }
                  echo "<option value='".$uid."'".$isSelected.">".$country."</option>";
                }

这是我修改Mihai Iorga代码后的多重选择下拉框的解决方案

尝试全部后,此“解决”方法将无效。 以前曾对w3school进行过一些研究,并记得其中有关于保持无线电价值的解释。 但它也适用于“选择”选项。 请参阅此处的示例。 只需尝试一下并玩一下。

<?php
$example = $_POST["example"];
?>
<form method="post">        
<select name="example">
    <option <?php if (isset($example) && $example=="a") echo "selected";?>>a</option>
    <option <?php if (isset($example) && $example=="b") echo "selected";?>>b</option>
    <option <?php if (isset($example) && $example=="c") echo "selected";?>>c</option>
</select>
<input type="submit" name="submit" value="submit" />
</form>

这解决了我的问题。 感谢所有回答

 <select name="name" id="name">
  <option value="a">a</option>
  <option value="b">b</option>
 </select>

<script type="text/javascript">
  document.getElementById('name').value = "<?php echo $_GET['name'];?>";
</script>

简便的解决方案:如果从数据库中获取选择框值,则在表单提交或表单POST之后保留选择的值

 <select name="country" id="country">
        <?php $countries = $wpdb->get_results( 'SELECT * FROM countries' ); ?>
        <option value="">
        <?php if(isset($_POST['country'])){echo htmlentities($_POST['country']); } else { echo "Select Country *"; }?>
        </option>
        <?php foreach($countries as $country){  ?>
        <option <?php echo ($_POST['country'] == $country->country_name ? 'selected="selected"':''); ?> value="<?php echo $country->country_name; ?>"><?php echo $country->country_name; ?>
        </option>
        <?php } ?>
      </select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM