Formulário IE7 não solicitado para lembrar senha quando enviado através de javascript
-
03-07-2019 - |
Pergunta
Tenho um site onde usamos Javascript para enviar o formulário de login.No Firefox, ele solicita que o usuário lembre sua senha ao fazer login, mas no IE7 isso não acontece.
Depois de fazer algumas pesquisas, parece que o usuário só é solicitado no IE7 quando o formulário é enviado por meio de um controle Enviar.Eu criei alguns exemplos de HTML para provar que esse é o caso.
<html>
<head>
<title>test autocomplete</title>
<script type="text/javascript">
function submitForm()
{
return document.forms[0].submit();
}
</script>
</head>
<body>
<form method="GET" action="test_autocomplete.html">
<input type="text" id="username" name="username">
<br>
<input type="password" id="password" name="password"/>
<br>
<a href="javascript:submitForm();">Submit</a>
<br>
<input type="submit"/>
</form>
</body>
</html>
O link href não recebe o prompt, mas o botão enviar receberá no IE7.Ambos funcionam no Firefox.
Não consigo fazer com que o estilo do meu site tenha a mesma aparência com um botão de envio. Alguém sabe como fazer com que o prompt para lembrar a senha apareça ao enviar via Javascript?
Solução
Por que não tentar conectar a submissão do formulário dessa maneira?
<html>
<head>
<title>test autocomplete</title>
<script type="text/javascript">
function submitForm()
{
return true;
}
</script>
</head>
<body>
<form method="GET" action="test_autocomplete.html" onsubmit="return submitForm();">
<input type="text" id="username" name="username">
<br>
<input type="password" id="password" name="password"/>
<br>
<a href="#" onclick="document.getElementById('FORMBUTTON').click();">Submit</a>
<br>
<input id="FORMBUTTON" type="submit"/>
</form>
</body>
</html>
Dessa forma, sua função será chamada se o link é clicado ou o botão Enviar é pressionado (ou a tecla Enter é pressionada) e você pode cancelar o envio retornando false. Isso pode afetar a maneira como o IE7 interpreta a submissão do formulário.
EDIT: Eu recomendaria sempre o envio do formulário de entrada dessa maneira, em vez de ligar para submeter () no objeto do formulário. Se você ligar para submeter (), ele não acionará o Onsubmit do objeto do formulário.
Outras dicas
Você tentou colocar o URL no href e anexar um manipulador de eventos de clique para enviar o formulário e retornar false do manipulador de cliques para que o URL não seja navegado.
Alternativamente, botão de envio oculto acionado via javascript?
Você pode tentar usar a u003Cbutton>tag HTML em vez de um link ou um botão de envio.u003C/button>
Por exemplo,
<button type="submit">Submit</button>
A u003Cbutton>tag é muito mais fácil de estilizar do que o padrãou003Cinput type="submit"> . Existem algumas peculiaridades de navegador, mas elas não são intransponíveis.u003C/button>
Um artigo realmente ótimo sobre o uso de u003Cbutton>pode ser encontrado em Partletree:u003C/button> Redescobrindo o elemento do botão