web-dev-qa-db-ja.com

コードを介してブラウザのテキスト入力の自動入力を選択的に無効にする方法は?

コードを使用してテキストフィールドの自動入力機能を選択的に無効にすることは可能ですか?

ASP.Net AJAXでカスタムコードを開発してデータベース内の提案を検索していますが、ユーザーがテキストボックスに入力し始めたときにブラウザーの提案が表示されないようにしたいと思います。

最新のブラウザー(IE 7および8、Firefox、Safari、Chrome)で動作するソリューションを探しています。回避策がJavascriptである場合は問題ありません。

23
holiveira

オートコンプリートHTML属性(フォームまたは入力タグ)を確認します。

<form [...] autocomplete="off"> [...] </form>

W3C>オートコンプリート属性

編集:

最近では、コメントから、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>
30
Julien Vaslet

あなたはそれをあなたの入力に入れることができます:

<input type="text" name="off" autocomplete="off">

またはjqueryで

$(":input").attr("autocomplete","off"); 
11
Elliott

この問題には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ミリ秒後にそれらを割り当てます。

6

autocomplete=off属性をhtmlinput要素に追加するとそれが可能になります。

4
Pete Kirkham

これはすべてのブラウザで機能するはずです

    <script type="text/javascript">
        var c = document.getElementById("<%=TextBox1.ClientID %>");
        c.select =
        function (event, ui) 
        { this.value = ""; return false; }
    </script>
1

私の回避策は、パスワードフィールドを通常のテキストボックスにしてから、jqueryを使用してフォーカスのあるパスワードフィールドに変換することです。

asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
    $("#txtPassword").focus(function () {
        $("#txtPassword").prop('type', 'password');
    });
</script>
1
Thelder

AutoCompleteType="Disabled"をテキストボックスに追加します

0
Adam