Я боролся с этой проблемой некоторое время, с уникальным поворотом проблемы. Привилегированные пользователи не могут работать с сохраненными паролями, но это нужно обычным пользователям. Это означало, что привилегированные пользователи должны были войти в систему дважды, во второй раз принудительно не сохраняя пароли.
С этим требованием стандартный метод autocomplete="off"
работает не во всех браузерах, поскольку пароль может быть сохранен при первом входе в систему. Коллега нашел решение заменить поле пароля, когда оно было сфокусировано на поле нового пароля, а затем сосредоточиться на поле нового пароля (затем подключить тот же обработчик событий). Это сработало (за исключением того, что это вызвало бесконечный цикл в IE6). Может быть, был способ обойти это, но это вызвало у меня мигрень.
Наконец, я попытался просто ввести имя пользователя и пароль за пределы формы. К моему удивлению, это сработало! Он работал на IE6 и текущих версиях Firefox и Chrome на Linux. Я не тестировал его дальше, но подозреваю, что он работает в большинстве, если не во всех браузерах (но меня не удивит, если бы там был браузер, которому было бы все равно, если бы не было формы).
Вот пример кода и jQuery, чтобы заставить его работать:
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<form id="theForm" action="/your/login" method="post">
<input type="hidden" id="hiddenUsername" name="username"/>
<input type="hidden" id="hiddenPassword" name="password"/>
<input type="submit" value="Login"/>
</form>
<script type="text/javascript" language="JavaScript">
$("#theForm").submit(function() {
$("#hiddenUsername").val($("#username").val());
$("#hiddenPassword").val($("#password").val());
});
$("#username,#password").keypress(function(e) {
if (e.which == 13) {
$("#theForm").submit();
}
});
</script>