2011-02-18 198 views
0

我有一個表格選擇,我動態填充:的jQuery:嘗試設置選擇選項

<div id="addRecordForm"> 
    <h2 class='uiblocktitle'>Add Record</h2> 
    <p class="forminstructions">All entries are required</p> 
    <form id="userform"> 
     <p class="label">Date:</p><p><?php print $_SESSION['longdateform']; ?></p> 
     <p class="label"><label for="departments" class="bodylabel">Department:</label></p> 
     <p> 
      <select id="departments" name="departments"> 
       <option value="null">Select A Department</option>"; 

       <?php 
        $query = "SELECT * FROM departments"; 
        $results = $db->getResults($query); 

        while($row = mysql_fetch_array($results)){ 
         if (count($results) > 0) { 
          //get department and id 
          $department = $row['department']; 
          $deptID = $row['id']; 

          print "<option value=\"" . $deptID . "\">" . $department . "</option>"; 
         } 
        } 
       ?> 

      </select></p> 

然後我想設置基於一些用戶數據所選擇的選項。被正確返回

//get user department 
$.ajax({ 
    type: "POST", 
    url: "lib/includes/getUserDepartment.php", 
    data: "empname=" + empname, 
    success: function(data){ 
     $("#addRecordForm").slideDown('fast'); 
     $('#departments').val(data).change(); 
    } 
}); 

了var數據和倒在下降的一個值對應,它們都從同一個數據庫表中同一領域的拉動,所以拼寫是不是一個問題。出於某種原因,我無法將選中的選項轉換爲正確的選項。我甚至努力在沒有運氣的情況下努力編碼值。我嘗試過$(「#departments」)的變體,val(),使用選項索引等等,nada。我究竟做錯了什麼?謝謝。

回答

2

如果你使用選項value(不是它的索引,而不是它的文本)來做,它應該可以工作。例如:

HTML:

<select id='theSelect'> 
    <option value='val1'>Item 1</option> 
    <option value='val2'>Item 2</option> 
    <option value='val3'>Item 31</option> 
    <option value='val4'>Item 4</option> 
    <option value='val5'>Item 5</option> 
</select> 

的JavaScript:

$("#theSelect").val("val4"); 

Live copy

或者與change處理程序,如果這是你正在運行的麻煩與:

$("#theSelect") 
    .change(function() { 
    $("<p>Changed!</p>").appendTo(document.body); 
    }) 
    .val("val4") 
    .change(); 

Live copy

+0

.change();是我想念的東西:) – VladL 2013-08-30 08:29:32

1

您必須使用(在你的PHP代碼示例$row['id'])部門ID來設置你的選擇所選擇的選項,因爲這就是你的選擇value屬性設置。例如,

$('#departments').val('null'); 

將選擇「選擇部門」選項。我爲您創建了一個jsfiddle example,說明了這一點。

您的示例中還有一個流浪";,緊接在您的「選擇部門」空選項的結尾</option>標記之後。

您沒有在您的示例中共享getUserDepartment.php的代碼,因此我無法驗證該方法是否確實返回行ID而不是行department列。