質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

オートコンプリート

オートコンプリートはアプリケーションから与えられるUIの機能で、ユーザが望む言葉や節をプログラムが自動的に予測し、実際に全て打たなくても入力できるように補完してくれるものです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

3875閲覧

Chrome のオートコンプリート入力後にテキストボックスをクリアした時の背景色をなんとかしたい

aoi70

総合スコア13

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

オートコンプリート

オートコンプリートはアプリケーションから与えられるUIの機能で、ユーザが望む言葉や節をプログラムが自動的に予測し、実際に全て打たなくても入力できるように補完してくれるものです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2016/04/04 08:09

Chrome で住所などを入力する際に、自動入力を使うことができます。
また、自動入力時はテキストボックスの背景色が黄色になります。

html

1<form name="name1" method="post"> 2 都道府県:<input type="text" x-autocompletetype="state" id="id1"> 3 市区町村:<input type="text" x-autocompletetype="city" id="id2"> 4 住所1:<input type="text" x-autocompletetype="address-line1" id="id3"> 5</form> 6<button onclick="testClear()">Clear</button>

javascript

1function testClear() { 2 document.name1.id1.value = ""; 3}

このとき、次のような操作を行うと、背景色が元に戻りません(黄色が解除されない)。

  1. 自動入力によってテキストボックスに値を入力する
  2. JavaScript による操作によって、一部のテキストボックスだけを空にする

(一部なので、Reset を利用しない)

キー操作やマウス操作によるテキストボックスのクリアでは背景色が元に戻りますが、このような操作で上手く背景色を解除する方法がないでしょうか。。。

回避方法として、そもそもオートコンプリートを利用しない、CSS(:-webkit-autofill)の背景色を定義しておく等の方法はあるかと思います。

もし、何か良い方法をご存じでしたらご教授頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

オートコンプリートしたら黄色くしたいけど、jsの操作をしたときに色も戻したいということですね

clone したのと replace すれば元に戻ります

javascript

1function resetColor(elem){ 2 elem.parentElement.replaceChild(elem.cloneNode(true), elem) 3}

この関数に元に戻したい要素を渡せば元通りです

投稿2016/04/10 13:12

編集2016/04/10 13:13
ryls-nmm

総合スコア633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2016/04/11 01:31 編集

その方法ですとオートコンプリートだけでなく、該当要素ノードを参照するAPI全てが初期化されます(WeakMap, addEventListener 等)。 私個人としては、Google Chrome の表示バグの為に他の実装にも影響が出る回避手段をとるのはお勧めしがたいですね…。
ryls-nmm

2016/04/11 04:45

バグがあろうと、その環境で動かさないといけない以上どこかで妥協しないとだと思うんですよね イベントは親が受け取るようにすればいいですが、WeakMap なども考えだすと同じ要素のほうが良さそうです DOMツリーから除外しても色は戻らず reset したときくらいしか JavaScript で戻せなさそうだったので reset する方法にしました これなら他に影響でないかな? ```javascript function resetColor(elem){     var parent = elem.parentElement     var dummy = document.createElement("div")     parent.replaceChild(dummy, elem)     var backup = elem.value          var form = document.createElement("form")     form.appendChild(elem)     form.reset()          elem.value = backup     parent.replaceChild(elem, dummy) } ``` backup は value プロパティだけですが足りないなら適宜追加する形でお願いします
aoi70

2016/06/19 03:44

大変参考になりました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問