Моя проблема в том, что автозаполнение браузеров (IE & FF) не работает для моей формы входа.
У меня есть веб-приложение с CakePHP и jQuery. Чтобы позволить посетителям войти / зарегистрироваться ненавязчиво. Форма входа находится внутри div, который загружается через AJAX. (Это позволяет войти без перезагрузки страницы.)
Браузеры распознают его как поле для входа в систему, так как они предлагают мне сохранить учетные данные при нажатии входа в систему. И они действительно сохраняют имя пользователя / пароль, поскольку они появляются между сохраненными в настройках браузера. Но сохраненное имя пользователя / пароль никогда не вводится автоматически. Они не отображаются предварительно введенными при загрузке страницы. Когда я начинаю вводить имя пользователя, оно появляется в качестве подсказки, но даже когда вы выбираете его, пароль рядом с ним не вводится. Зачем? Как я могу заставить это работать?
Чтобы вы могли проверить это сами, вот простая форма входа в AJAX:
http://gablog.eu/test/ajaxlogin.html
Он загружает следующую форму входа, если вы перейдете по ссылке ниже, автозаполнение будет работать только для простой формы, так что это не проблема с самой формой, а скорее то, что она загружена в AJAX:
http://gablog.eu/test/loginform.html
Макет:
<div id="user-bar">
<script type="text/javascript">
$(function() {
$("#user-bar").load('loginform.html').html();
});
</script>
</div>
Вид загружен (когда не вошел в систему):
<form id="form-login" action="" onsubmit="login(); return false;">
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<input type="submit" value="Login"/>
<div id="login-error" class="error-message"></div>
</form>
<script type="text/javascript">
function login() {
$.post('/ajax/login', $("#form-login").serialize(), function(data) {
if (data.success) {
$("#user-bar").load('userbar.html').html();
} else {
$("#login-error").html(data.message);
}
}, "json");
}
</script>
Чтобы уточнить: я не хочу использовать автозаполнение AJAX, я хочу, чтобы автозаполнение браузера работало для моей формы входа. Это проблема между моей формой и браузером. Представление jQuery играет незначительную роль, поскольку имена пользователей и пароли сохраняются. Они просто не вводятся автоматически для HTML-элементов, загруженных ajax! (тестовый сайт не использует отправку jQuery.) Схожий вопрос: Форма автозаполнения / сохранения браузера не работает в запросе ajax