我有一个小脚本,可以重新加载包含聊天室中用户昵称的选择。当有人点击选择时,javascript会刷新它,从php页面重新填充选项以添加已登录的人并删除已注销的人。 该脚本在重新加载select时正常工作,但我希望它避免在用户单击select另一次刷新列表时丢失先前选择的选项,并且脚本没有保留正确的选项。所有代码都正常工作,除了jquery的一部分。
JS(jquery库当然也在页面上):
<script type="text/javascript">
$(document).ready(function() {
$("#Users").focusin(function() {
var UsersSelect = $('#Users').val();
$("#Users").load("users.php");
$('select[name="Users"]').val(UsersSelect);
});
});
</script>
html / php网页:
<div id="UserList" name="UserList">
<select name="Users" id="Users">
<?
$queryprep = "select name FROM users";
$query = $PDO->prepare($queryprep);
$query->execute();
while($rs = $query->fetch()) {
echo "<option value=".$rs['name'].">".$rs['name']."</option>";
}
$query = null;
?>
</select>
</div>
users.php页面:
<select name="Users" id="Users">
<?
$queryprep = "select name FROM users";
$query = $PDO->prepare($queryprep);
$query->execute();
while($rs = $query->fetch()) {
echo "<option value=".$rs['name'].">".$rs['name']."</option>";
}
$query = null;
?>
</select>
感谢您的回答。
答案 0 :(得分:0)
AJAX是异步的,因此您尝试在填充数据之前重置该值。替换选项后,select将再次失去该值
使用complete callback
load()
$("#Users").focusin(function() {
var $select=$(this), UsersSelect = $select.val();
$select.load("users.php", function(){
/* new html exists now s we can set value*/
$select.val(UsersSelect);
});
})