私はこのコードを持っています:
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"
しかし、何も起こりませんでした。ここで何が間違っていますか?
追加するだけです:
autocomplete="off"
INPUT
要素の属性として、f.ex:
<input autocomplete="off" id="register_username" type="text" name="username">
jQueryバージョン:
$("#register_username").attr("autocomplete", "off");
これを確認してください fiddle out
document.getElementById("register_username").autocomplete="off"
同意しますが、autocomplete="off"
は広くサポートされるべきであり、最終的な解決策です。機能しないのは オートコンプリート属性のHTML5仕様 の結果かもしれません:
オートコンプリートメカニズムは、ユーザーが要素の値を変更したかのように動作するユーザーエージェントによって実装される必要があり、要素が可変であるときに実行される必要があります(たとえば、要素がドキュメントに挿入された直後、またはユーザーエージェントが解析を停止したとき)。
それは、私にとって、それが要素の「元の」属性であることを意味し、レンダリング後に追加することはできません。そして、ほとんどのブラウザは新しい仕様を実装しているため1、可能性としては、上記の仕様に基づいて実装を修正する前に、javascriptで許可した場合です。
まだ行っていない場合は、[おそらく]ドキュメントの準備ができているときにjQueryに依存するのではなく、コントロールに属性を直接追加してみてください。
1 HTML5は標準ではないため、ここでは仕様を誤って使用していますが、多くのブラウザはより具体的な機能の一部を実装しています。 autocomplete
はIE5以来存在しているので、おそらく安全な実装と考えることができるものの1つです。
jqueryオートコンプリートをオフにする方法を探している人がここに来た場合に備えて:
$("#elementId").autocomplete({
disabled: true
});
<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' );
});
});
2019年4月23日現在。
特にフォームを使用せず、シリアル化されたjqueryセレクターを使用してデータを送信する場合に、ページ上のすべての項目でChromeの自動入力を無効にする場合。
実行時にそれを行うことは私にとって最良の結果をもたらし、Chromeはいずれにせよ実行時に自動入力されるので、Chromeの動作に対抗する正当なソリューションです。
コードの最後にこれを追加すると、Chromeは自動入力を強制しません:
<script>
$(document).ready(function () {
$("input").attr("autocomplete", "new-password");
});
</script>
ここで、「nope」のような別のランダムな文字列に「off」を変更する必要があります。
Jquery:
$("#register_username").attr("autocomplete", "nope");
HTML:
<input id="register_username" type="text" autocomplete="nope">