jquery:尝试设置选择选项

时间:2011-02-18 19:18:52

标签: jquery select set selection

我有一个动态填充的表单选择:

<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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您必须使用部门ID(PHP代码示例中为$row['id'])在您的选择中设置所选选项,因为这是您为选项value属性设置的内容。

$('#departments').val('null');
例如,

会选择“选择A部门”选项。我为你创建了一个jsfiddle example来说明这一点。

在您的“选择A部门”空选项的结束";标记之后,您的示例中还有一个迷路</option>

您没有在示例中共享getUserDepartment.php的代码,因此我无法验证该方法是否确实返回了行ID而不是行department列。