У меня есть небольшой скрипт, который перезагружает выбор, содержащий псевдонимы пользователей в чате. Когда кто-то нажимает кнопку выбора, 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>
Спасибо за ответы.
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);
});
})
ready
?