我遇到的问题是,当提交表单时,用户的下拉选项会丢失,我希望在提交后自动选择下拉菜单选项(表单发布到同一页面)根据用户下拉选项提交)。
我想知道使用已发布的$_POST
值的最简单方法是什么,从<select>
元素中自动选择选择下拉列表中的相应选项。
这是我尝试过的,没有成功:
<select name="filter1" value="<?php echo isset($_POST['filter1']) ? $_POST['filter1'] : ""; ?>">
<?php echo getFilterOptions(); ?>
</select>
注意:我正在寻找最简单的方法。我愿意使用JQuery,JavaScript或PHP作为解决方案。如果可能的话,我不想在选项中硬编码,因为这些是使用mySQL / PHP自动生成的。
答案 0 :(得分:2)
选择输入值以这种方式设置:
<select name="filter1">
<option value="red">Red</option>
<option value="green" selected="selected">Green</option>
<option value="blue">Blue</option>
</select>
选择绿色选项。
在你的getFilterOptions函数中,你应该遍历你的选项,并且每个选项与字段名称 filter1 的后期值进行比较:
<select name="filter1">
<?php echo getFilterOptions("filter1"); ?>
</select>
<?php
function getFilterOptions($fieldName) {
$options = array("red" => "Red", "green" => "Green", "blue" => "Blue"); // Assuming these are your database extracted options
$select = "";
$isSetField = isset($_POST[$fieldName]) ? true : false;
foreach($options AS $value => $name) {
$select .= '<option value="' . $value . '" ' . ($isSetField && $value == $_POST[$fieldName] ? 'selected="selected"' : '') . '>' . $name . '</option>';
}
return $select;
}
?>
答案 1 :(得分:2)
你可以这样做:
<select name="filter1">
<option value="test1">test 1</option>
<option value="test2">test 2</option>
</select>
<script>
document.getElementsByName('filter1')[0].value = '<?php echo $_POST['filter1']; ?>'
</script>
答案 2 :(得分:0)
您必须在要选择的选项中包含selected="selected"
属性。将$_POST['filter1']
传递给getFilterOptions
并根据您输出的当前选项进行检查将是我的建议。
答案 3 :(得分:0)
尝试
在select和html的html中设置id
JavaScript在下拉列表中选择值
<script>
function setSelectedValue(selectObj, valueToSet) {
for (var i = 0; i < selectObj.options.length; i++) {
if (selectObj.options[i].value == valueToSet) {
selectObj.options[i].selected = true;
return;
}
}
}
var objSelect1 = document.getElementById('filter1');
setSelectedValue(objSelect1, "<?php $_POST['filter1']; ?>");
</script>
用法
setSelectedValue(objSelect1,Value);
答案 4 :(得分:0)
循环显示值并选择=选择存储在_POST中的值:
<?php
$dropdownFilter1= array("Dog","Cat","Fox");
echo "<select>";
foreach($dropdownFilter1 as $selectOption){
$select = ($selectOption == $_POST['filter1'])? "selected='selected'":"";
echo "<option $select>$selectOption</option>";
}
echo "</select>";
大声思考。
答案 5 :(得分:0)
$isSelected = "";
$value = $_POST['filter1'];
...所以你需要生成这样的下拉列表:
echo "<select id='drop-down' name='filter1'>";
for($i=0; $i<=count($dropDownValues); $i++) {
if ($value==$i) $isSelected="selected='selected'";
echo "<option value='$i' $isSelected >$i</option>";
}
...我没有测试这个,但它应该工作。显然这是缺少所有$ _POST验证铃声和口哨等...