我从数据库中拉回用户信息,并根据此信息使用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):
<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是否真的有预期值(确实有)。
我做错了什么?
发布于 2012-11-20 04:44:37
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/>发布于 2012-11-20 04:56:40
这不起作用的原因是因为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框架帮助在选择了适当的<option/>的情况下将<select/>标记回显到输出。
发布于 2012-11-20 04:41:34
这不是在HTML中指定所选<option>的方式。您需要在<option>本身上具有selected属性,如下所示:
<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/>https://stackoverflow.com/questions/13461812
复制相似问题