選択コードを経由して、ブラウザのテキスト入力でオートフィルを無効にする方法?
質問
それは選択のコードを使用して、テキストフィールドにオートフィル機能を無効にすることは可能ですか?
私は、データベース内の提案を検索するためのASP.Net AJAXで私のカスタムコードを開発していると私は、ユーザーがテキストボックスに入力して開始したときに表示され、ブラウザの提案を防ぐしたいと思います。
私は、最新のブラウザ(IE 7&8、FirefoxやSafariとクローム)で機能するソリューションを探しています。これは、回避策はJavaScriptであればokですだ。
解決
(フォームまたは入力タグの)オートコンプリートのHTML属性を見ます。
<form [...] autocomplete="off"> [...] </form>
編集ます:
この頃 - コメントから - ウェブブラウザは、常にオートコンプリートタグ定義された振る舞いを尊重しません。この非点は、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のクロムのV36に次のコードをテストしています。
Google Chromeの最近のバージョンはもう動作しません。以前のハックのAutocomplete=off
.Someにかかわらず、オートフィルを強制的に(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);
});
これは、要素から属性を「名前」と「ID」を削除し、1msの後に戻ってそれらを割り当てます。
それを行う必要があるのhtml autocomplete=off
要素にinput
属性を追加します。
これはすべてのブラウザで動作するはずです。
<script type="text/javascript">
var c = document.getElementById("<%=TextBox1.ClientID %>");
c.select =
function (event, ui)
{ this.value = ""; return false; }
</script>
あなたのテキストボックスにAutoCompleteType="Disabled"
を追加
私の問題を回避するには、その後、フォーカスにパスワードフィールドにそれを回すためにjqueryのを使用して、パスワードフィールドに、通常のテキストボックスを作成することです。
asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
$("#txtPassword").focus(function () {
$("#txtPassword").prop('type', 'password');
});
</script>