Wie die Autofill-in-Browser Texteingaben selektiv über den Code deaktivieren?
Frage
Ist es möglich, die Funktion zum automatischen Ausfüllen in Textfeldern mithilfe von Code, um selektiv zu deaktivieren?
ich meine eigenen Code in ASP.Net AJAX Entwicklung für den Vorschlag in der Datenbank zu suchen, und ich möchte die Browser-Vorschläge erscheinen verhindern, wenn der Benutzer die Eingabe in das Textfeld beginnt.
Ich bin auf der Suche nach einer Lösung, die in den meisten modernen Browsern (IE 7 & 8, Firefox, Safari und Chrome) funktioniert. Es ist in Ordnung, wenn die Abhilfe in Javascript ist.
Lösung
Sehen Sie sich das Autocomplete HTML-Attribut (auf Form oder Eingangs-Tags).
<form [...] autocomplete="off"> [...] </form>
W3C> Automatische Vervollständigung Attribut
Edit:
Heute - aus den Kommentaren - Web-Browser respektiert nicht immer das Autocomplete-Tag definiert Verhalten. Diese Nichteinhaltung mit einem wenig JavaScript-Code umgeben sein könnte, aber Sie sollten darüber nachdenken, Sie dies tun wollen, bevor verwenden.
Zuerst Felder werden während des Ladens der Seite gefüllt werden und werden nur einmal die Seite zu laden, entleert werden. Die Nutzer werden sich fragen, warum das Feld geleert wurde.
Zweitens wird diese anderen Web-Browser Mechanismen zurückzusetzen, wie die Autofill eines Feldes, wenn Sie auf die vorherige Seite zurück.
jQuery( function()
{
$("input[autocomplete=off]").val( "" );
} );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post" action="">
<div class="form-group">
<label for="username">Username</label>
<input type="text" id="username" name="username" value="John" autocomplete="off">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" name="password" value="qwerty" autocomplete="off">
</div>
<input type="submit" value="Login">
</form>
Andere Tipps
können Sie es in Ihre Eingaben setzen:
<input type="text" name="off" autocomplete="off">
oder in jquery
$(":input").attr("autocomplete","off");
Es gibt zwei Lösungen für dieses Problem. Ich habe folgenden Code in Google Chrome v36 getestet.
Neueste Version von Google Chrome zwingt Autofill unabhängig von der Autocomplete=off
.Some der vorherigen Hacks funktionieren nicht mehr (34+ Versionen)
Lösung 1:
Setzen Sie folgenden Code unter unter <form ..>
-Tag.
<form id="form1" runat="server" >
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
...
Lösung 2:
$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function () {
var input = this;
var name = $(input).attr('name');
var id = $(input).attr('id');
$(input).removeAttr('name');
$(input).removeAttr('id');
setTimeout(function () {
$(input).attr('name', name);
$(input).attr('id', id);
}, 1);
});
Es entfernt „name“ und „id“ Attribute von Elementen und ordnet sie nach 1ms zurück.
ein autocomplete=off
Attribut auf das HTML-Element input
Hinzufügen sollte das tun.
Dies sollte in jedem Browser
arbeiten <script type="text/javascript">
var c = document.getElementById("<%=TextBox1.ClientID %>");
c.select =
function (event, ui)
{ this.value = ""; return false; }
</script>
Fügen Sie den AutoCompleteType="Disabled"
auf Ihre Textbox
Meine Abhilfe ist, das Passwort-Feld ein normales Textfeld zu machen, dann jquery verwendet es in Passwortfeld auf Fokus zu aktivieren:
asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
$("#txtPassword").focus(function () {
$("#txtPassword").prop('type', 'password');
});
</script>