[解決済み】CSSを使用して入力にテキストがあるかどうかを検出する -- 私が訪問しているページで、制御していないのですか?
質問
入力にテキストがあるかどうかをCSSで検出する方法はありますか?私は
:empty
擬似クラス、および
[value=""]
どちらもうまくいきませんでした。これに対する解決策が一つも見つからないようです。
の擬似クラスがあることを考えると、これは可能であるに違いないと想像しています。
:checked
と
:indeterminate
どちらも似たようなものです。
ご注意ください。 私はこれを"Stylish"スタイルのために行っています。 JavaScriptを利用することができません。
また、Stylish は、ユーザーがコントロールしないページで、クライアントサイドで使用されることにも注意してください。
どのように解決するのですか?
スタイリッシュ
は、CSSではできないので、このようなことはできません。
CSSには、以下のような(擬似)セレクタがありません。
<input>
の値を指定します。
ご覧ください。
は
:empty
セレクタは子ノードのみを参照し、入力値を参照するものではありません。
[value=""]
する
が動作します。
初期
の状態になります。 これは、ノードの
value
属性
(CSSが見る)ノードと同じではありません。
value
プロパティ
(ユーザーまたはDOMのjavascriptによって変更され、フォームデータとして送信されます)。
初期状態だけを気にするのでなければ あなた 必ず ユーザースクリプトまたは Greasemonkey スクリプトを使用します。 幸いなことにこれは難しいことではありません。 以下のスクリプトは、Chrome、GreasemonkeyやScriptishをインストールしたFirefox、またはユーザースクリプトをサポートしているブラウザ(つまりIEを除くほとんどのブラウザ)で動作します。
CSSの限界とjavascriptによる解決策のデモは、以下をご覧ください。 このjsBinのページ .
// ==UserScript==
// @name _Dynamically style inputs based on whether they are blank.
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
var inpsToMonitor = document.querySelectorAll (
"form[name='JustCSS'] input[name^='inp']"
);
for (var J = inpsToMonitor.length - 1; J >= 0; --J) {
inpsToMonitor[J].addEventListener ("change", adjustStyling, false);
inpsToMonitor[J].addEventListener ("keyup", adjustStyling, false);
inpsToMonitor[J].addEventListener ("focus", adjustStyling, false);
inpsToMonitor[J].addEventListener ("blur", adjustStyling, false);
inpsToMonitor[J].addEventListener ("mousedown", adjustStyling, false);
//-- Initial update. note that IE support is NOT needed.
var evt = document.createEvent ("HTMLEvents");
evt.initEvent ("change", false, true);
inpsToMonitor[J].dispatchEvent (evt);
}
function adjustStyling (zEvent) {
var inpVal = zEvent.target.value;
if (inpVal && inpVal.replace (/^\s+|\s+$/g, "") )
zEvent.target.style.background = "lime";
else
zEvent.target.style.background = "inherit";
}
関連
-
[解決済み】bootstrap 3で画像にテキストを回り込ませる
-
[解決済み] CSS無効なプロパティ値?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] javascript(またはjQuery)を使って::beforeや::afterなどのCSS疑似要素を選択し、操作する。
-
[解決済み] CSS text-overflow: ellipsis; が効かない?
-
[解決済み] ページロード時のフェードイン効果にCSSを使用する
-
[解決済み] テキスト入力欄のCSSセレクタ?
-
[解決済み] CSSは要素が持つ子供の数を検出することができますか?
-
[解決済み] cssでテキストを隠す
-
[解決済み】入力テキストボックスの変更を検出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】@font-faceが機能しない。
-
[解決済み】DIVの幅が100%というのは本当の100%ではない
-
[解決済み] CSSでボーダーの不透明度を設定することはできますか?
-
[解決済み] <label for=""> CSSを非表示にする方法
-
[解決済み] FontAwesomeによる星評価用CSS
-
[解決済み] CSSを使用します。ウィンドウの幅の50%の背景色を設定する
-
[解決済み] Bootstrapのポップオーバーの幅を変更する
-
[解決済み] Bootstrapコンテナが複数またはネストされていませんか?
-
[解決済み] cssでこの要素を取得するには
-
[解決済み] ChromeでCSSが効かない