从数据库中我撤回了用户信息,基于此我可以使用case语句确定正确的索引值:
<?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 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
是否确实具有预期值(确实如此)。
我做错了什么?
答案 0 :(得分:2)
selectedindex属性未以这种方式使用,为了正确使用selectedindex属性,您可以查看http://www.w3schools.com/jsref/prop_select_selectedindex.asp。
相反,你所追求的是将“selected”属性应用于适当的选项。下面的代码运行一些简写if / else检查,并根据您在给定函数中创建的$ genderIndex,在适当的情况下应用“selected”属性。
<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/>
答案 1 :(得分:1)
这不起作用的原因是因为 selectedIndex 不是HTML <select/>
元素的有效属性。 (见http://www.w3.org/TR/html4/interact/forms.html#h-17.6)
要预先选择<select/>
元素中的选项(除了第一个选项,这是一个空值),您需要让HTML输出看起来像这样:
<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”。像下面这样的东西可以完成工作,但不是很优雅。
<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框架协助将<select/>
标记回显到输出,并选择了相应的<option/>
。
答案 2 :(得分:0)
这不是您在HTML中指定所选<option>
的方式。您需要在selected
上拥有<option>
属性,如下所示:
<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/>