2013-03-13 104 views
0

我有一個從mySQL數據庫使用PHP填充的下拉列表。如何預先選擇下拉菜單中的第一個選項,記住這些值可能不總是相同的?在動態填充的下拉列表中預先選擇第一個選項

這是我的HTML代碼:

function loadparameters(selobj, url, nameattr) { 
     $(selobj).empty(); 
     $.getJSON(url, {}, function (data) { 
      $.each(data, function (i, obj) { 
       $(selobj).append($("</option><option> 
       </option>").val(obj[nameattr]).html(obj[nameattr])); 
      }); 
     }); 
    } 

    $(function() { 
     loadparameters($('select#parameterType').get(0), 
     'GetParameter.php?GetParameter=parameterType', 'parameterType');}); 

..和PHP腳本:

<?php 

if(!empty($_GET['GetParameter'])) 
{ 
$list = $_GET['GetParameter']; 
$qry=''; 
switch($list) 
{ 
    case 'parameterType': 
    { 
     $qry = "SELECT parameterType FROM Parameters"; 
     break; 
    } 
} 

if(empty($qry)){ echo "invalid params! "; exit; } 

$dbconn = mysql_connect('*******','*******','******') 
     or die("DB login failed!"); 

mysql_select_db('*****', $dbconn) 
     or die("Database does not exist! ".mysql_error($dbconn)); 

$result = mysql_query($qry,$dbconn) 
     or die("Query $qry failed! ".mysql_error($dbconn)); 

$rows = array(); 

while($rec = mysql_fetch_assoc($result)) 
{ 
    $rows[] = $rec; 
} 
mysql_free_result($result); 
mysql_close($dbconn); 

echo json_encode($rows); 
} 
?> 

回答

2

看上去是錯在你的代碼的唯一的事情就是這條線

$(selobj).append($("</option><option></option>").val(obj[nameattr]).html(obj[nameattr])); 

爲什麼關閉關閉/打開/關閉選項標籤?

難道不是這樣嗎? (我已經縮進了可讀性的代碼)

$(selobj).append(
    $("<option></option>") // only open/close tag 
     .html(obj[nameattr]) // this injects HTML 
); 

OR

$(selobj).append(
    $("<option></option>") // only open/close tag 
     .text(obj[nameattr]) // this only injects text 
); 

如果解決這個問題,那麼第一個選項應該被預選。它未被預先選擇的原因是因爲您的瀏覽器可能會自動使用空白選項自動解決此問題。

另外,我發現下面的語法更具有可讀性:

var option = $("<option></option>").text(obj['nameattr']); 
$(selobj).append(option); 
+2

作爲輕微的替代:'變種選項= $( '

+0

我也喜歡你的語法,在這種情況下更有意義 – 2013-03-13 22:21:14

+0

謝謝。我原本有這樣的聲明:function loadparameters(selobj,url,nameattr){$(selobj).empty(); $。getJSON(url,{},function(data){$(selobj).append('」).val(obj [nameattr])。html(obj [ nameattr]));});});}並且當我刪除它時忘記取消關閉選項標記。 – Newbie 2013-03-13 22:31:43

相關問題