我有一个动态填充的表单选择:
<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。我究竟做错了什么?感谢。
答案 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");
或使用change
处理程序,以防您遇到问题:
$("#theSelect")
.change(function() {
$("<p>Changed!</p>").appendTo(document.body);
})
.val("val4")
.change();
答案 1 :(得分:1)
您必须使用部门ID(PHP代码示例中为$row['id']
)在您的选择中设置所选选项,因为这是您为选项value
属性设置的内容。
$('#departments').val('null');
例如,会选择“选择A部门”选项。我为你创建了一个jsfiddle example来说明这一点。
在您的“选择A部门”空选项的结束";
标记之后,您的示例中还有一个迷路</option>
。
您没有在示例中共享getUserDepartment.php的代码,因此我无法验证该方法是否确实返回了行ID而不是行department
列。