刷新后使用jquery在选择下拉列表中选择一个选项

时间:2013-12-14 23:30:06

标签: jquery html select refresh selected

我有一个小脚本,可以重新加载包含聊天室中用户昵称的选择。当有人点击选择时,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>

感谢您的回答。

1 个答案:

答案 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);
    });
})