提交后从选择下拉菜单中自动选择选项的最佳方式

时间:2013-11-06 16:55:27

标签: javascript php jquery

我遇到的问题是,当提交表单时,用户的下拉选项会丢失,我希望在提交后自动选择下拉菜单选项(表单发布到同一页面)根据用户下拉选项提交)。

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

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

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

注意:我正在寻找最简单的方法。我愿意使用JQuery,JavaScript或PHP作为解决方案。如果可能的话,我不想在选项中硬编码,因为这些是使用mySQL / PHP自动生成的。

6 个答案:

答案 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验证铃声和口哨等...