【问题标题】:Keeping selected an option in select dropdown with jquery after refresh刷新后使用jquery在选择下拉列表中保持选择一个选项
【发布时间】:2014-01-02 13:51:24
【问题描述】:

我有一个小脚本,可以重新加载包含聊天室中用户昵称的选择。当有人单击选择时,javascript 会刷新它,从 php 页面重新填充选项以添加已登录的人员并删除已注销的人员。 该脚本在重新加载选择时正常工作,但我希望它避免在用户再次单击选择以刷新列表时丢失先前选择的选项,并且脚本没有保留正确的选项。所有代码都可以正常工作,除了 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>

感谢您的回答。

【问题讨论】:

    标签: jquery html select refresh selected


    【解决方案1】:

    AJAX 是异步的,因此您尝试在填充数据之前重置该值。一旦选项被替换,选择将再次失去价值

    使用load()complete callback

    $("#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);
        });
    })
    

    【讨论】:

    • 我替换了代码,但现在根本没有重新加载选择。
    • 是的,我做到了,一切看起来都很好。
    • 在这里工作正常jsfiddle.net/w4GuM/1 不太确定在focusin 上触发这个是最好的主意
    • 它适用于 chrome,但使用 firefox 似乎仍会重新加载该值。我确实在我的原始版本中选择了 focusin,因为在选择选项时使用 onclick 确实触发了另一个重新加载。
    • 我在 Firefox 中对其进行了测试...我的意思是为什么您需要等到用户专注于选择才能进行 ajax 调用。慢速连接可能需要一些时间。如果 IE 对此想法有异议,也不会感到惊讶
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多