コードを使用してテキストフィールドの自動入力機能を選択的に無効にすることは可能ですか?
ASP.Net AJAXでカスタムコードを開発してデータベース内の提案を検索していますが、ユーザーがテキストボックスに入力し始めたときにブラウザーの提案が表示されないようにしたいと思います。
最新のブラウザー(IE 7および8、Firefox、Safari、Chrome)で動作するソリューションを探しています。回避策がJavascriptである場合は問題ありません。
オートコンプリートHTML属性(フォームまたは入力タグ)を確認します。
<form [...] autocomplete="off"> [...] </form>
編集:
最近では、コメントから、Webブラウザはオートコンプリートタグで定義された動作を常に尊重するとは限りません。この無礼は、JavaScriptコードの一部で囲まれている可能性がありますが、これを使用する前に、実行したいことを検討する必要があります。
まず、フィールドはページの読み込み中に入力され、ページが読み込まれると空になります。ユーザーは、フィールドが空になった理由を質問します。
次に、前のページに戻ったときのフィールドの自動入力など、他のWebブラウザーメカニズムがリセットされます。
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>
あなたはそれをあなたの入力に入れることができます:
<input type="text" name="off" autocomplete="off">
またはjqueryで
$(":input").attr("autocomplete","off");
この問題には2つの解決策があります。私はGoogleで次のコードをテストしましたChromev36。Googleの最近のバージョンChrome Autocomplete=off
に関係なくオートフィルを強制します。以前のハックのいくつかはもう動作しません(34+バージョン)
解決策1:
以下のコードを<form ..>
タグの下に配置します。
<form id="form1" runat="server" >
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
...
解決策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);
});
要素から「name」および「id」属性を削除し、1ミリ秒後にそれらを割り当てます。
autocomplete=off
属性をhtmlinput
要素に追加するとそれが可能になります。
これはすべてのブラウザで機能するはずです
<script type="text/javascript">
var c = document.getElementById("<%=TextBox1.ClientID %>");
c.select =
function (event, ui)
{ this.value = ""; return false; }
</script>
私の回避策は、パスワードフィールドを通常のテキストボックスにしてから、jqueryを使用してフォーカスのあるパスワードフィールドに変換することです。
asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
$("#txtPassword").focus(function () {
$("#txtPassword").prop('type', 'password');
});
</script>
AutoCompleteType="Disabled"
をテキストボックスに追加します