首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP设置HTML下拉菜单的selectedindex属性

使用PHP设置HTML下拉菜单的selectedindex属性
EN

Stack Overflow用户
提问于 2012-11-20 04:38:57
回答 3查看 4.5K关注 0票数 0

我从数据库中拉回用户信息,并根据此信息使用case语句确定正确的索引值:

代码语言:javascript
运行
复制
<?php
    $genderIndex = 0;
    switch ($displayProperties['gender']) 
    {
        case "":
            $genderIndex = 0;
            break;
        case "Male":
            $genderIndex = 1;
            break;
        case "Female":
            $genderIndex = 2;
            break;
        case "Other":
            $genderIndex = 3;
            break;
    }
 ?>

在表单上,我有一个HTML下拉菜单(select):

代码语言:javascript
运行
复制
<select name="gender" selectedIndex="<?php echo $genderIndex; ?>">
    <option value="0"> </option>
    <option value="Male">Male</option>
    <option value="Female">Female</option>
    <option value="Other">Other</option>
</select><br/>

问题是它从来不工作,总是在index=0加载页面,我确保验证$genderIndex是否真的有预期值(确实有)。

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-20 04:44:37

selectedindex属性不是以这种方式使用的,要正确使用selectedindex属性,可以查看http://www.w3schools.com/jsref/prop_select_selectedindex.asp

相反,您要做的是将"selected“属性应用于适当的选项。下面的代码运行一些简写的if/else检查,并将根据您在给定函数中创建的$genderIndex在适当的地方应用"selected“属性。

代码语言:javascript
运行
复制
<select name="gender">
    <option value="0" <?php echo ($genderIndex==0)?('selected'):(''); ?>"> </option>
    <option value="Male" <?php echo ($genderIndex==1)?('selected'):(''); ?>>Male</option>
    <option value="Female" <?php echo ($genderIndex==2)?('selected'):(''); ?>>Female</option>
    <option value="Other" <?php echo ($genderIndex==3)?('selected'):(''); ?>>Other</option>
</select><br/>
票数 2
EN

Stack Overflow用户

发布于 2012-11-20 04:56:40

这不起作用的原因是因为selectedIndex不是HTML <select/>元素的有效属性。(参见http://www.w3.org/TR/html4/interact/forms.html#h-17.6)

要在<select/>元素中预先选择一个选项(第一个选项除外,在这个元素中是一个空值),您需要让您的HTML输出看起来像这样:

代码语言:javascript
运行
复制
<select name="gender">
<option value="0"> </option>
<option value="Male">Male</option>
<option value="Female" selected="true">Female</option>
<option value="Other">Other</option>
</select>

注意,在第二个<option/>标记上添加了selected="true“。像下面这样的代码可以完成工作,但很难做到优雅。

代码语言:javascript
运行
复制
<select name="gender">
<?php
if(0 == $genderIndex)
    echo '<option value="0" selected="true"> </option>';
else
    echo '<option value="0"> </option>';

if(1 == $genderIndex)
    echo '<option value="Male" selected="true">Male</option>';
else
    echo '<option value="Male">Male</option>';

if(2 == $genderIndex)
    echo '<option value="Female" selected="true">Female</option>';
else
    echo '<option value="Female">Female</option>';

if(3 == $genderIndex)
    echo '<option value="Other" selected="true">Other</option>';
else
    echo '<option value="Other">Other</option>';
?>
</select>

一个好的web框架在这里会很有帮助。我知道在Java语言中,Struts框架帮助在选择了适当的<option/>的情况下将<select/>标记回显到输出。

票数 1
EN

Stack Overflow用户

发布于 2012-11-20 04:41:34

这不是在HTML中指定所选<option>的方式。您需要在<option>本身上具有selected属性,如下所示:

代码语言:javascript
运行
复制
<select name="gender">
    <option value="0"> </option>
    <option value="Male" selected>Male</option>
    <option value="Female">Female</option>
    <option value="Other">Other</option>
</select><br/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13461812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档