Я нашел полное решение для этого вопроса. (Я проверял это в Chrome 27 и Firefox 21).
Есть две вещи, которые нужно знать:
- Нажмите «Сохранить пароль» и
- Восстановите сохраненное имя пользователя / пароль
1. Нажмите «Сохранить пароль»:
Для Firefox 21 «Сохранить пароль» запускается, когда он обнаруживает, что существует форма, содержащая поле ввода текста и поле ввода пароля. Так что нам просто нужно использовать
$('#loginButton').click(someFunctionForLogin);
$('#loginForm').submit(function(event){event.preventDefault();});
someFunctionForLogin()
выполняет вход в ajax и перезагружает / перенаправляет на страницу входа, в то время как event.preventDefault()
блокирует первоначальное перенаправление из-за отправки формы.
Если вы имеете дело только с Firefox, вышеуказанного решения достаточно, но оно не работает в Chrome 27. Затем вы спросите, как вызвать «Сохранить пароль» в Chrome 27.
Для Chrome 27 «Сохранить пароль» запускается после его перенаправления на страницу путем отправки формы, содержащей текстовое поле ввода с атрибутом name = 'username' и поля ввода пароля с атрибутом name = 'password' . Поэтому мы не можем заблокировать перенаправление из-за отправки формы, но мы можем сделать перенаправление после того, как мы выполнили вход в AJAX. (Если вы хотите, чтобы вход в ajax не перезагружал страницу или не перенаправлял ее на страницу, к сожалению, мое решение не работает.) Тогда мы можем использовать
<form id='loginForm' action='signedIn.xxx' method='post'>
<input type='text' name='username'>
<input type='password' name='password'>
<button id='loginButton' type='button'>Login</button>
</form>
<script>
$('#loginButton').click(someFunctionForLogin);
function someFunctionForLogin(){
if(/*ajax login success*/) {
$('#loginForm').submit();
}
else {
//do something to show login fail(e.g. display fail messages)
}
}
</script>
Кнопка с type = 'button' сделает форму не подлежащей отправке при нажатии кнопки. Затем, связывание функции с кнопкой для входа в AJAX. Наконец, вызов $('#loginForm').submit();
перенаправляет на страницу входа. Если страница входа в систему является текущей страницей, то вы можете заменить «SignIn.xxx» текущей страницей, чтобы выполнить «обновление».
Теперь вы обнаружите, что метод для Chrome 27 также работает в Firefox 21. Так что лучше его использовать.
2. Восстановите сохраненное имя пользователя / пароль:
Если у вас уже есть loginForm, жестко запрограммированный как HTML, у вас не возникнет проблем с восстановлением сохраненного пароля в loginForm.
Однако сохраненное имя пользователя / пароль не будет привязано к loginForm, если вы используете js / jquery для динамического создания loginForm, потому что сохраненное имя пользователя / пароль привязывается только при загрузке документа.
Поэтому вам нужно было жестко закодировать loginForm как HTML и использовать js / jquery для динамического перемещения / показа / скрытия loginForm.
Примечание:
если вы входите в Ajax, не добавляйте autocomplete='off'
в форму тега, как
<form id='loginForm' action='signedIn.xxx' autocomplete='off'>
autocomplete='off'
восстановление имени пользователя / пароля в loginForm завершится неудачно, потому что вы не разрешаете ему «автозаполнение» имени пользователя / пароля.