[英]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.