У меня возникают проблемы с получением текущего состояния поля ввода переключателя, которое находится на странице, которая ранее отображалась браузером. Сценарий таков:
- Страница, содержащая элемент ввода, визуализируется с первым переключателем в группе, имеющим атрибут «проверено».
- Пользователь выбирает другой переключатель (например, третий вариант), а затем переходит на другую страницу.
- Пользователь нажимает кнопку «Назад» в браузере, чтобы повторно отобразить страницу.
На этом этапе автозаполнение браузера установило, что третий переключатель отображается как выбранный, но первый переключатель по-прежнему имеет атрибут «проверено». Это означает, что любой javascript, пытающийся получить текущее выбранное значение переключателя, возвращает значение первого элемента ввода, а не третьего (которое выбрано визуально).
Кто-нибудь знает, какой javascript можно использовать для возврата визуально выбранного переключателя, а не элемента с атрибутом «проверено»?
ПРИМЕЧАНИЕ. Я знаю, что могу отключить это, используя autocomplete="off"
в элементе ввода, но было бы неплохо иметь возможность сохранить выбор переключателя, так как в противном случае автозаполнение немного бессмысленно в сценарии с использованием javascript.
На самом деле я использую jQuery в своем живом приложении, поэтому решение jQuery или javascript будет приемлемым.
Вот некоторый базовый HTML-код, демонстрирующий проблему. Вам нужно будет сохранить следующее в локальном файле .html, загрузить его в браузер, перейти на другую страницу, а затем нажать «назад», чтобы увидеть проблему.
<html>
<head></head>
<body>
<h1>Radio test</h1>
<label>
<input name="test" type="radio" value="1" checked>
Value 1
</label>
<label>
<input name="test" type="radio" value="2">
Value 2
</label>
<label>
<input name="test" type="radio" value="3">
Value 3
</label>
<div id="message"></div>
</body>
<script lang="javascript">
var rv = document.querySelector('input[name="test"]:checked').value;
document.getElementById("message").innerText = rv;
</script>
</html>
Если вы загрузите страницу, она будет выглядеть так:
Выберите «Значение 3», перейдите на другую страницу (например, из закладки или введите URL-адрес), а затем нажмите кнопку «Назад». Теперь на странице будет отображаться следующее:
то есть переключатель «Значение 3» кажется выбранным, но получение значения с использованием javascript по-прежнему показывает, что выбрано «Значение 1» (поскольку это элемент с атрибутом «checked»).