選択コードを経由して、ブラウザのテキスト入力でオートフィルを無効にする方法?

StackOverflow https://stackoverflow.com/questions/1929486

質問

それは選択のコードを使用して、テキストフィールドにオートフィル機能を無効にすることは可能ですか?

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

私は、最新のブラウザ(IE 7&8、FirefoxやSafariとクローム)で機能するソリューションを探しています。これは、回避策はJavaScriptであればokですだ。

役に立ちましたか?

解決

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

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

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

編集ます:

この頃 - コメントから - ウェブブラウザは、常にオートコンプリートタグ定義された振る舞いを尊重しません。この非点は、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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top