2013-03-13 103 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

相关问题