php - 选择的选项总是落入第一个值,莫名其妙

标签 php html optional-parameters

echo "<td>Language</td>";
echo "<td><select id='language' name='language'>
            <option value=''>Select...</option>
            <option value='en_US'>English(US)</option>
            <option value='en_AU'>English(AU)</option>
            <option value='en_US'>English(UK)</option>
          </select>
      </td>";   

我将代码片段封装在表单中以发布 php 文件,当我选择提交表单时,我可以看到这些选项。但是,在我单击按钮保存所选内容后,无论如何,上面的语言始终设置为第一个选项(en_US)。

最佳答案

您需要检查上次提交的值,以确定哪个选项应接收 selected 属性。您当前没有执行此操作,因此浏览器将第一个选项设置为所选选项。

// Define all languages
$l = array('en_US'=>'English(US)','en_AU'=>'English(AU)','en_UK'=>'English(UK)');

// Prepare an options variable
$o = "";

// Construct our options list
foreach ( $l as $k => $v )
  $o .= sprintf("<option value='%s'%s>%s</option>", 
          $k, $k === $_POST["language"] ? " selected" : "", $v);

// Echo our Select menu
echo "<select id='language' name='language'>$o</select>";

演示:http://codepad.org/PkwNYHbO

关于php - 选择的选项总是落入第一个值,莫名其妙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593586/

相关文章:

php - session_regenerate_id 和安全属性

php - mysql 列的总和

javascript - 检查是否有任何文本框包含文本

java - 从 Clojure 调用带有可选参数的 java 函数

checkbox - Jenkins:取消选中复选框后如何显示/隐藏字符串参数字段?

php - 如何将用户数据传递到 SQL 查询中?

JavaScript 可在本地主机上运行,​​但不能在实时站点上运行

javascript - 提交文本输入会删除 JavaScript 中的页面元素

html - 暂停屏幕阅读器以获得辅助功能

python - 多参数函数 - *args/**kwargs 的正确用法