2013-12-14 1 views
0

У меня есть небольшой скрипт, который перезагружает выбор, содержащий псевдонимы пользователей в чате. Когда кто-то нажимает кнопку выбора, javascript обновляет его, повторно заполняя эту опцию с php-страницы, чтобы добавить людей, которые вошли в систему, и удалить тех, кто вышел из системы. Сценарий работает правильно при перезагрузке выбранного, но я хочу, чтобы он не потерял выбранный вариант прецедента, если пользователь нажимает кнопку выбора в другое время, чтобы обновить список, и сценарий не поддерживает правильный вариант. Весь код работает правильно, за исключением той части jquery.Сохранение выбранной опции в раскрывающемся списке выбора с 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

AJAX является асинхронным, поэтому вы пытаетесь сбросить значение до того, как данные будут заполнены. После того, как параметры заменило выберите утратит значение снова

Используйте 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); 
    }); 
}) 
+0

Я заменил код, но теперь выбрать не перезагружается вообще. – SophieV

+0

любые ошибки в консоли? И вы завернули в 'ready'? – charlietfl

+0

Да, я сделал, и все выглядело отлично. – SophieV

Смежные вопросы