2015-02-08 148 views
0

你好我有一個下拉框,如下面的一個,HTML和PHP問題選擇下拉

function dropdown($name, array $options, $selected=null) 
{ 
/*** begin the select ***/ 
$dropdown = '<select name="'.$name.'" id="'.$name.'">'."\n"; 

$selected = $selected; 
/*** loop over the options ***/ 
foreach($options as $key=>$option) 
{ 
    /*** assign a selected value ***/ 
    $select = $selected==$key ? ' selected' : null; 

    /*** add each option to the dropdown ***/ 
    $dropdown .= '<option value="'.$key.'"'.$select.'>'.$option.'</option>'."\n"; 
} 

/*** close the select ***/ 
$dropdown .= '</select>'."\n"; 

/*** and return the completed dropdown ***/ 
return $dropdown; 
} 
?> 

<form> 

<?php 
$name = 'my_dropdown'; 
$options = array('dingo', 'wombat', 'kangaroo'); 
$selected = 1; 

echo dropdown($name, $options, $selected); 

?> 
</form> 

運行此代碼後,一切正常顯示,但是選擇的選項是通過改變選擇的值不正確。

的問題是,它的表現是這樣 <option value="1" selected="">wombat</option>

,但實際上它應該表現出這樣的 <option value="1" selected>wombat</option>

請建議我該如何解決這個問題

+2

這不是問題。這只是一個屬性的瀏覽器表示。什麼是錯誤的 - 應該選擇什麼值**,選擇什麼**。 – 2015-02-08 18:04:59

+0

'$ selected = $ selected;' - 這沒有意義。我應該用':'替換':null'。 – 2015-02-08 18:08:20

+0

實際上它沒有選擇正確的值,因爲選中=「」顯示在代碼中並且錯誤地顯示了值。請通過將$選擇的值更改爲0或2來運行上述程序。然後您知道確切的問題 – 2015-02-09 13:20:32

回答

0

有些瀏覽器使用selected=true,有的只是selected。 同時使用也很好。
所以不要在Firebug中檢查它,因爲那可能是別的什麼,那麼實際的代碼是什麼。 嘗試

$select = $selected==$key ? ' selected="true" selected' : ""; 

ps。你可以省略$selected = $selected;