web-dev-qa-db-ja.com

JQueryは入力のオートコンプリートを無効にします

私はこのコードを持っています:

Html:

<input id="register_username" type="text">
<input id="register_password" type="text">
<input id="register_repeatpassword" type="text">
<input id="register_email" type="text">

Jquery:

$(document).ready(function(){
    $('#register_username').attr('autocomplete','off');
    $('#register_password').attr('autocomplete','off');
    $('#register_repeatpassword').attr('autocomplete','off');
    $('#register_email').attr('autocomplete','off');
    });

一部のブラウザで提供されているオートコンプリート機能を無効にし、実際にユーザーにフィールド全体を入力させますが、コードが機能せず、ドロップダウンメニューが表示され、ユーザーは以前に入力したものを選択できます。また、ユーザーautocomplete="off"しかし、何も起こりませんでした。ここで何が間違っていますか?

19
Max Pain

追加するだけです:

autocomplete="off"

INPUT要素の属性として、f.ex:

<input autocomplete="off" id="register_username" type="text" name="username">
30
David Hellsing

jQueryバージョン:

$("#register_username").attr("autocomplete", "off");
12
Carl Smith

これを確認してください fiddle out

 document.getElementById("register_username").autocomplete="off"
6
rajesh kakawat

同意しますが、autocomplete="off"は広くサポートされるべきであり、最終的な解決策です。機能しないのは オートコンプリート属性のHTML5仕様 の結果かもしれません:

オートコンプリートメカニズムは、ユーザーが要素の値を変更したかのように動作するユーザーエージェントによって実装される必要があり、要素が可変であるときに実行される必要があります(たとえば、要素がドキュメントに挿入された直後、またはユーザーエージェントが解析を停止したとき)。

それは、私にとって、それが要素の「元の」属性であることを意味し、レンダリング後に追加することはできません。そして、ほとんどのブラウザは新しい仕様を実装しているため1、可能性としては、上記の仕様に基づいて実装を修正する前に、javascriptで許可した場合です。

まだ行っていない場合は、[おそらく]ドキュメントの準備ができているときにjQueryに依存するのではなく、コントロールに属性を直接追加してみてください。

1 HTML5は標準ではないため、ここでは仕様を誤って使用していますが、多くのブラウザはより具体的な機能の一部を実装しています。 autocompleteはIE5以来存在しているので、おそらく安全な実装と考えることができるものの1つです。

4
Brad Christie

jqueryオートコンプリートをオフにする方法を探している人がここに来た場合に備えて:

$("#elementId").autocomplete({
  disabled: true
  });
1
Jared
<form id='myForm'>
    <input id="register_username" type="text">
    <input id="register_password" type="text">
    <input id="register_repeatpassword" type="text">
    <input id="register_email" type="text">
</form>
$(document).ready(function(){
    $('#myForm').on( 'focus', ':input', function(){
        $(this).attr( 'autocomplete', 'off' );
    });
});
1
Prakash

2019年4月23日現在。

特にフォームを使用せず、シリアル化されたjqueryセレクターを使用してデータを送信する場合に、ページ上のすべての項目でChromeの自動入力を無効にする場合。

実行時にそれを行うことは私にとって最良の結果をもたらし、Chromeはいずれにせよ実行時に自動入力されるので、Chromeの動作に対抗する正当なソリューションです。

コードの最後にこれを追加すると、Chromeは自動入力を強制しません:

<script>
    $(document).ready(function () {
        $("input").attr("autocomplete", "new-password");
    });
</script>
1
Wadih M.

ここで、「nope」のような別のランダムな文字列に「off」を変更する必要があります。

Jquery:

$("#register_username").attr("autocomplete", "nope");

HTML:

<input id="register_username" type="text" autocomplete="nope">
1
Cava