ホームページ > ウェブフロントエンド > フロントエンドQ&A > CSS入力が編集不可とはどういう意味ですか?

CSS入力が編集不可とはどういう意味ですか?

PHPz
リリース: 2023-04-24 09:58:39
オリジナル
1109 人が閲覧しました

フロントエンド開発プロセスでは、input 要素は最も一般的に使用されるフォーム コントロールの 1 つです。特殊なケースでは、ユーザーによる input 要素の変更を制限する必要がある場合、通常はこの要件を達成するために input 要素の CSS 属性を設定することを考えますが、実際にはこれは実現可能な解決策ではありません。

CSS には、disabled プロパティや readonly プロパティなど、入力要素の動作やスタイルを制御するために使用できる関連プロパティがいくつかあります。ただし、これらの属性は本質的に入力要素の CSS 属性を変更するものではなく、許可される対話方法を変更して禁止または読み取り専用の効果を実現します。

入力を編集できないという要件を実現するために、CSS プロパティを使用することがよくあります。例:

input {
  pointer-events: none;
  user-select: none;
  color: gray;
  background-color: #fafafa;
}
ログイン後にコピー

このような CSS コードは非常に直接的に見えますが、実際には、CSS が無効であるため無効です。 style は、input 要素の値を直接制御することはできません。どのように設定しても、input 要素の value 属性を使用して JavaScript で変更できます。

では、なぜ入力要素のスタイルと値を CSS で直接変更できないのでしょうか?これは、入力要素の特性と目的に関連します。

まず第一に、input 要素の値はユーザーが入力するか、他のソースから取得する必要があり、プログラマは自分の必要性のためにそれを強制的に変更すべきではありません。したがって、その値が変更されていないことを確認するには、入力の disabled または readonly 属性を設定する必要があります。

同時に、input 要素には設計の最初から独自のセマンティクスが与えられました。 Web ページでは、input はユーザー入力データを取得するために使用されるコントロールであり、入力データは処理のためにバックグラウンド サーバーに送信されます。プログラマが入力のスタイルと値を直接制御できる場合、次のようないくつかの予期せぬリスクが発生する可能性があります。

  1. 悪意のあるプログラムは、JavaScript またはブラウザ拡張機能を使用して入力の値を改ざんする可能性があります。したがって、ユーザーの名前で不適切なデータを送信する;
  2. 悪意のある Web サイト攻撃者は、CSS 攻撃を使用して入力データを隠し、ユーザー情報を詐取する可能性がある;
  3. メンテナンスの問題: スタイルや値が変更される場合同時に、制限がないと、これらの入力要素を維持することが非常に困難になります。

したがって、基本的には、input 要素の値を直接変更することはできません。ただし、必要な場合には、コードを通じて入力を編集不可能な状態にすることもできます。

  1. disabled 属性を使用する

disabled 属性は入力コントロール自体が所有しており、これを設定すると入力要素がグレーになります。変更することはできません。これは、使用できないコントロールはクリックやキーボード入力などの対話イベントに応答しないためです。これは非常に安全で実装が簡単な方法です。

<input type="text" id="myInput" disabled>
ログイン後にコピー
  1. readonly 属性を使用する

readonly 属性は、入力コントロール自体が持つ別の属性です。disabled と比較して、readonly は入力要素を読み取り専用にします。 、見た目は変わりません。これは、CSS を使用して入力要素のスタイルを変更することはできますが、その値を変更することはできないことを意味します。ただし、このプロパティはユーザーにのみ影響し、値は JavaScript またはバックエンド コードを使用して変更できます。

<input type="text" id="myInput" readonly>
ログイン後にコピー
  1. JavaScript を使用した監視

最後の方法は、JavaScript を使用して入力要素の値が変更されないようにすることです。ユーザーが入力した後、JavaScript を使用して入力値を保存し、input 要素を無効にして、ユーザーが再度クリックしても input 要素を変更できないようにすることができます。

<input type="text" id="myInput" onkeyup="storeInputValue(this)" >

<script>
  function storeInputValue(input) {
    input.setAttribute('value', input.value);
    input.setAttribute('disabled', 'disabled');
  }
</script>
ログイン後にコピー

この場合、input 要素は値を入力した直後に使用できなくなり、ユーザーはその値を再度変更できなくなります。ただし、これは完璧な解決策ではないことに注意してください。

概要

上記の導入により、CSS プロパティを使用して入力要素の値を編集不可に制御することは無効であることがわかります。ただし、入力コントロール自体のプロパティを設定するか、JavaScript を使用して入力を監視することで、編集不可能な効果を実現できます。ただし、入力要素には設計の初期段階から非常に重要なセマンティクスと機能があり、それらを過度に制御すると予期せぬ悪影響が生じる可能性があるため、これは慎重に行う必要があります。

以上がCSS入力が編集不可とはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート