0

我有以下 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') 

它按预期工作。有人可以解释我的功能有什么问题吗?

4

2 回答 2

2

更改此行

 (($value == $checked) ? ' selected ' : '') . "> $value </option>\n";

 (($value == $checked) ? ' selected="selected" ' : '') . "> $value </option>\n"; 
于 2013-04-12T17:58:44.437 回答
1

HTML 在 HTML 5 标准下有效。这是让你耳目一新的方式。如果您单击刷新按钮或按 F5,浏览器将记住您的选择。您必须再次“转到”该 URL(即单击地址栏并按 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');

为什么浏览器会记住您的选择? 这是大多数浏览器内置的选项(通常在选项中保存表单历史记录)。禁用此功能应确保您始终将表单数据重置为其“原始状态”。这样做的问题是它将表单数据留在最终用户手中,这是不好的。

通过使用属性可以确保它始终使用selectednot the :last rememberedautocomplete

<select autocomplete="off">

于 2013-04-12T18:06:39.973 回答