Ho trovato una soluzione completa per questa domanda. (Ho provato questo in Chrome 27 e Firefox 21).
Ci sono due cose da sapere:
- Attiva "Salva password" e
- Ripristina il nome utente / la password salvati
1. Attiva "Salva password":
Per Firefox 21 , "Salva password" viene attivato quando rileva che è presente un modulo contenente un campo di testo di input e viene inviato un campo di input password. Quindi dobbiamo solo usare
$('#loginButton').click(someFunctionForLogin);
$('#loginForm').submit(function(event){event.preventDefault();});
someFunctionForLogin()
effettua l'accesso ajax e ricarica / reindirizza alla pagina di accesso mentre event.preventDefault()
blocca il reindirizzamento originale a causa dell'invio del modulo.
Se hai a che fare solo con Firefox, la soluzione sopra è sufficiente ma non funziona in Chrome 27. Quindi chiederai come attivare "Salva password" in Chrome 27.
Per Chrome 27 , "Salva password" viene attivato dopo essere reindirizzato alla pagina inviando il modulo che contiene un campo di testo di input con nome attributo = "nome utente" e un campo di password con nome nome attributo = "password" . Pertanto, non possiamo bloccare il reindirizzamento a causa dell'invio del modulo, ma possiamo effettuare il reindirizzamento dopo aver effettuato l'accesso ajax. (Se vuoi che il login ajax non ricarichi la pagina o non reindirizzi a una pagina, sfortunatamente, la mia soluzione non funziona.) Quindi, possiamo usare
<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>
Il pulsante con type = 'button' renderà il modulo da non inviare quando si fa clic sul pulsante. Quindi, associando una funzione al pulsante per l'accesso ajax. Finalmente chiamando$('#loginForm').submit();
reindirizzamenti alla pagina di accesso. Se la pagina di accesso è la pagina corrente, è possibile sostituire "signedIn.xxx" con la pagina corrente per eseguire "aggiorna".
Ora, scoprirai che il metodo per Chrome 27 funziona anche in Firefox 21. Quindi è meglio usarlo.
2. Ripristina il nome utente / la password salvati:
Se hai già loginForm hardcoded come HTML, non troverai alcun problema per ripristinare la password salvata in loginForm.
Tuttavia, il nome utente / la password salvati non verranno associati a loginForm se si utilizza js / jquery per rendere loginForm dinamicamente, poiché il nome utente / la password salvati vengono associati solo quando il documento viene caricato.
Pertanto, è necessario codificare il loginForm come HTML e utilizzare js / jquery per spostare / mostrare / nascondere il loginForm in modo dinamico.
Nota:
se si effettua l'accesso ajax, non aggiungere autocomplete='off'
in forma tag come
<form id='loginForm' action='signedIn.xxx' autocomplete='off'>
autocomplete='off'
farà sì che il ripristino del nome utente / password nel loginForm fallisca perché non gli permetti di 'completare automaticamente' il nome utente / password.