簡體   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