2011-12-04 11 views
32

autocomplete="off"は私が後になったものではありません。基本的に私の登録フォームには、「電話」と「パスワード」のフィールドが上下に配置されています。登録フォームのフィールドに事前入力フィールドが表示されないようにするにはどうすればよいですか?

「電話」フィールドには、ブラウザが何をしているかのようにユーザ名があらかじめ入力されています。ブラウザはタイプパスワードのフィールドを見つけ、テキスト入力フィールドを直前に仮定しますユーザー名フィールド。

registration form snapshot

私は携帯電話のフィールドのための非標準のオートコンプリート属性に興味がないのはなぜ、私は、ユーザーができるだけ容易とする場合は、このフォームに記入することができるようにしたいということです。効果はこれです彼らは以前に他のサイト(電話と呼ばれるフィールド)に自分の電話番号を入力していました。だから私はオートコンプリートを完全にオフにしたくないのです。

私はこの動作を避けるためにフィールドを何とか再構成する方向にもっと考えていました。または、ブラウザにパスワードフィールドの上のフィールドが何も関係していないこと、またはパスワードフィールドが認証目的に使用されていないことを伝える何らかの方法。何とかそれをそれに印を付ける。または、これらの2つのフィールドの間にいくつかの不可視の要素を挿入するか?

アイデア?使用

マークアップ:

<input id="phone" name="phone" type="text" value="" maxlength="30"> 
<input id="newPassword" name="newPassword" type="password" value="" maxlength="20"> 

私はクロム、FF、(IEわからないでこの動作を取得していますが、私のマシンでその古風なバージョンを持って、でも、IEの心配を開始したくありません)

+0

同様の質問、答えませ許容:http://stackoverflow.com/questions/1523212/how-does-the-the-browser-decide-which-form-fields-are-username-password –

+2

の場合'autocomplete =" off "'を使用したくない場合、JavaScriptを使って 'onload'イベントの値をクリアできると思いますか?しかし、JavaScriptがなければ、これは可能だとは思わない。 –

+1

https://developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion(および類似のドキュメント)を読んでみてください。あなたは運が良ければ簡単かもしれませんが、とにかく実装固有の問題がある可能性があります。それが「期待される」アプローチであることを基に再注文を検討することは適切かもしれませんが、それがよりカスタマイズ可能であればいいと思っています。 –

答えて

30

ほとんどのパスワードマネージャは、最初のパスワードフィールドとその前の最も近いテキストフィールドを検索します。

あなたがしなければならないことは、「新しいパスワード」の上に目に見えないテキストとパスワードフィールド(display:none)を追加することだけです。

Firefox tries to interpret 3 password fieldsをパスワード変更アクションとしてください。そのようにしたくない場合は、もう1つの非表示のパスワードフィールドを追加して安全にしてください。

+2

優れた提案!魅力的に働いた! –

+0

mozillaコードリンクありがとう!あなたの提案は、モルジラを彩色して、あなたが望んでいないフィールドをあらかじめ設定しておくのをうまくやめさせます。しかし、フォーム提出後にブラウザがユーザに依頼しても、たとえそうでなくてもユーザ名であると仮定されているフィールドの保存されたパスワードを変更したいのであれば、ここではより完全な回避策に取り組んでいます。 – cdaddr

+0

これは奇妙なハックですが、動作します:s – isapir

2

家の番号は30文字にすることはできません。これはおそらくブラウザがサイズのためにユーザー名またはログインメールであると想定しているからです。それを何かに変えて何が起こるかを見てください。

また、電話番号、市外局番、接頭辞、接尾辞の3つのフィールドを持つことを検討してください。特定の桁数が満たされると、次の電話セグメントのフィールドにJavaScriptを使用して自動フォーカスを設定することができます。

フィールドの位置を変更しようとしましたか?何が起こったか?

また、登録中に特定の項目の自動補完機能をオフにすることもできますが、ログイン中にオフにすることを心配する必要はありません(ログインすることはできません)もちろん、あなたはする必要はありません。

また、使用していない保存済みフォームの自動完成品を削除しても、ローカルバージョンの問題である可能性があります。ブラウザのいずれかに間違った値を入力してしまった場合は、 FF)し、新しくインストールされたブラウザは、オリジナルのブラウザと同じようにルールをコピーしました....だから、フォームのグローバルな問題だと思います。あなたの最初のブラウザから悪いエントリールールをコピーして複製し、あなたに本当の、普遍的な問題のように見せかけてくれますか?ブラウザのInPrivateモードを試してみるか、別のインストールや別のコンピュータ、または使用している可能性のあるvirtualpcインスタンスからブラウザを試してみてください。

それ以外の場合は、ブラウザからすべての設定をエクスポートし、両方のブラウザをアンインストールしてからFFとChromeを再インストールし、Webページをテストしてからエクスポートした設定を元に戻してください。

また、IE上でテストしても、それが洞察のためであっても、あなたに与えるかもしれない、私の言いたいことを知っていますか?

ご希望の場合は、どうすればいいのか、他にご質問がある場合はお知らせください。

UPDATE:

あなたは携帯電話のフィールドをレンダリングする際、入力タグに値=」 "属性を追加されて行うことができる、代わりに使用すべきかを、あなたが選択した方法で、与えられましたJavaScript。これは、javascriptを使用する必要なくプリフィルが発生するのを防ぐはずです。

ページが読み込まれるときのOnLoadイベント中に、JavaScriptを使用して電話フィールドを確認し、その値が1つのスペース( "")に等しい場合は上書きしますJavaScriptを使用して空の文字列を使用すると、onLoadがトリガーされます。または、ブラウザがまだプリフィルしている場合(私は疑いがありますが、もしそうなら疑問に思うかもしれませんが)、このチェックを数百ミリ秒遅らせて、ページがロードされてから数百ミリ秒後に実行するか、入力フィールドonFocusイベントは、フィールドのいずれかがフォーカスを取得すると直ちに "phone.valueは1つのスペース文字(" ")になります。そうであれば空の文字列で上書きします上記のように、たとえこのonLoadを実行しても、ブラウザが内部のブラウザの後でページ/ javascriptのオンロードが発生すると、ブラウザがあなたのフィールドをハイジャックすることは疑わしいですonLoad(DocumentComplete)イベントが発生し、最悪の場合のシナリオでは、数百ミリ秒の遅延やonFocusメソッドを実行できますが、これらが必要になるかどうかは疑問です。

どうすればいいですか?

+0

あなたのすべての提案に感謝します。これは間違いなく私のブラウザがインストールされた方法ではありませんでした。これは、複数のマシン/ブラウザのバージョン間で一貫して起こっていたからです。 @DavidThomasが提案したように、私はJavaScriptを使用してこの問題を解決しました –

1

入力フィールドのタイプ=テキスト&タイプ=パスワードを無効にしようとしましたが、DOMを読み込んだ後、特定のミリ秒後にすべての無効なフィールドを有効にしました.100と言うことができます。 試してみてください。

$(document).ready(function() 
{ 
$("input[type=text],input[type=password]").prop('disabled','disabled'); 

$("body").delay(10,function(){ 
    $("input[type=text],input[type=password]").prop('disabled',''); 
    }); 
}); 
11

私はセットパスワードフィールドと同様の問題がありました。 MDN inputドキュメントから

<input type="password" autocomplete="new-password"> 

試してみてください。

オートコンプリート

この属性は、コントロールの値は、ブラウザによって自動的に完了することができるかどうかを示します。

可能な値は以下のとおり

....新しいパスワード:新しいパスワード(例えばアカウントを作成したりパスワードを変更するときに

私はこれを設定し、そこでユーザー名を自動完成しませんでした。

<input type="tel"> 
+0

このソリューションは、最新のブラウザでは機能しません。 Chromeは「オートコンプリート」属性を無視します –

関連する問題