1

我遇到的问题是,提交表单时,用户的下拉选择会丢失,我希望在加载后自动选择下拉菜单选择(表单发布到与提交相同的页面) ,基于用户的下拉选择。

我想知道使用发布$_POST值的最简单方法是什么,从<select>元素到从选择下拉列表中自动选择相应的选项。

这是我尝试过的,但没有成功:

<select name="filter1" value="<?php echo isset($_POST['filter1']) ? $_POST['filter1'] : ""; ?>">
    <?php echo getFilterOptions(); ?>
</select>

注意:我正在寻找最简单的方法来做到这一点。我愿意使用 JQuery、JavaScript 或 PHP 作为解决方案。如果可能的话,我不想在选项中硬编码任何东西,因为它们是使用 mySQL / PHP 自动生成的。

4

6 回答 6

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;
}
?>
于 2013-11-06T17:44:33.867 回答
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>
于 2013-11-21T17:45:26.750 回答
0

您必须在selected="selected"要选择的选项中包含该属性。我的建议是传递$_POST['filter1']给您正在输出的当前选项并对其进行检查。getFilterOptions

于 2013-11-06T16:59:34.307 回答
0

尝试

在选择和使用的 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);
于 2013-11-06T17:01:24.853 回答
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>";

只是大声思考。

于 2013-11-06T17:04:30.120 回答
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 验证的花里胡哨等......

于 2013-11-06T17:14:36.260 回答