Моя проблема заключается в том, что автозаполнение браузера (IE & FF) не работает для моей формы входа.
У меня есть webapp с CakePHP и jQuery. Чтобы посетители могли незарегистрированно войти в систему/зарегистрироваться. Форма входа находится в div, который загружается через AJAX. (Это позволяет выполнять вход в систему без перезагрузки страницы.)
Браузеры распознают его как поле входа, так как они предлагают мне сохранить учетные данные при нажатии входа в систему. И они действительно сохраняют имя пользователя/пароль, поскольку они отображаются между сохраненными в настройках браузера. Но сохраненное имя пользователя/пароль никогда не вводится автоматически. При загрузке страницы они не отображаются заранее. Когда я начинаю вводить имя пользователя, имя пользователя появляется как предложение, но даже когда вы его выбираете, пароль не вводится рядом с ним. Зачем? Как я могу заставить это работать?
Чтобы вы могли протестировать его самостоятельно, вот простая форма входа в AJAX:
http://gablog.eu/test/ajaxlogin.html
Он загружает следующую форму входа, если вы перейдете к указанному ниже URL-адресу, автозаполнение будет работать только для простой формы, поэтому это не проблема с самой формой, а скорее, что она загружена 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, похоже, играет второстепенную роль, поскольку имена пользователей/паролей сохраняются. Они просто не введены автоматически для ajax-загруженных элементов HTML! (тестовый сайт не использует отправку jQuery.) Связанный вопрос: автозаполнение/сохраненная форма браузера не работает в ajax запрос