我有以下PHP函数:
function pick ($fieldname, $optionvalues, $defvalue=0, $size=0)
{
$checked = $defvalue;
echo "<select name=\"$fieldname\" size=\"$size\">\n";
foreach ($optionvalues as $value)
echo " <option value = \"$value\" ".
(($value == $checked) ? ' selected ' : '') . "> $value </option>\n";
echo "</select>";
}
当我用它来称呼它时:
$vals = array('a','b','c','d','e');
pick ('pick2', $vals, 'c');
它不会突出显示c
,即使在页面源中,它也会标记为已选中。
我的页面来源是:
<select name="pick2" size="0">
<option value = "a" > a </option>
<option value = "b" > b </option>
<option value = "c" selected > c </option>
<option value = "d" > d </option>
<option value = "e" > e </option>
</select>
如果我将通话功能更改为:
pick('p',$vals,'c')
它可以正常工作。 有人可以解释我的功能有什么问题吗?
答案 0 :(得分:2)
更改此行
(($value == $checked) ? ' selected ' : '') . "> $value </option>\n";
到
(($value == $checked) ? ' selected="selected" ' : '') . "> $value </option>\n";
答案 1 :(得分:1)
HTML在HTML 5标准下有效。这是你爽快的方式。如果单击刷新按钮或按F5,浏览器将记住您的选择。您必须再次“转到”该网址(例如,点击地址栏并按Enter键)
<?php
function pick ($fieldname, $optionvalues, $defvalue='', $size=0){
$checked = $defvalue;
echo '<select name="'.$fieldname.'">';
foreach($optionvalues as $value){
echo '<option value="'.$value.'"'.($checked==$value?' selected':'').'>'.$value.'</option>';
}
echo '</select>';
}
$vals = array('a','b','c','d','e');
pick ('pick2', $vals, 'c');
为什么浏览器会记住您的选择? 这是大多数浏览器内置的选项(通常在选项中保存表单历史记录)。禁用此功能应确保始终将表单数据重置为“原始状态”。这样做的问题是它将表单数据留在最终用户手中,这是不好的。
通过使用selected
属性,可以确保始终使用last remembered
而不是autocomplete
:
<select autocomplete="off">