読み取り専用と無効の微妙な違いの詳細な説明

読み取り専用と無効の微妙な違いの詳細な説明
「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにします。しかし、それらの間には微妙な違いがあり、次のようにまとめられます。

Readonly は入力 (テキスト / パスワード) とテキストエリアにのみ有効ですが、disabled はすべてのフォーム要素に有効です。ただし、フォーム要素が無効にされた後、POST または GET 経由でフォームを送信すると、この要素の値は渡されませんが、readonly は値を渡します (readonly は値の変更を受け入れ、送り返すことができますが、disable は変更を受け入れますが、データを送り返しません)。

より一般的な状況は次のとおりです。

フォームでは、ユーザー固有の識別コードが事前に入力されており、ユーザーはそれを変更できません。ただし、送信時に値を渡す必要があります。この場合、その属性を readonly に設定する必要があります。

ユーザーが正式にフォームを送信した後、管理者が情報を確認するまで待つ必要があることがよくあります。これにより、ユーザーはフォーム内のデータを変更できず、表示のみが可能になります。disabled にはさまざまな要素があるため、このときに使用する必要があります。ただし、送信ボタンも無効にする必要があることに注意してください。そうしないと、ユーザーがこのボタンを押した限り、データベース操作ページで整合性チェックが実行されないと、データベース内の値がクリアされます。この場合、無効ではなく読み取り専用を使用すると、フォームに入力 (テキスト/パスワード) とテキストエリア要素のみがある場合は問題ありません。選択などの他の要素がある場合は、ユーザーは値を書き換えて Enter キーを押して送信できます (Enter はデフォルトの送信トリガー キーです)。

多くの場合、JavaScript を使用して、ユーザーが送信ボタンを押した後にそのボタンを無効にすることがあります。これにより、ネットワーク状態が悪い環境でユーザーが送信ボタンを繰り返しクリックして、データベースにデータが重複して保存されることを防ぐことができます。

disabled 属性と readonly 属性にはいくつかの類似点があります。たとえば、両方を true に設定すると、フォーム属性は編集できなくなります。js コードを書くときに、これら 2 つの属性を混在させるのはよくあることです。実際、これら 2 つの属性にはいくつかの違いがあります。

入力項目の disabled が true に設定されている場合、フォーム入力項目はフォーカスを取得できず、入力項目に対するすべてのユーザー操作 (マウスクリックやキーボード入力など) が無効になります。最も重要な点は、フォームが送信されたときに、フォーム入力項目が送信されないことです。
Readonly は、テキストを入力できるテキスト入力ボックスなどの入力項目にのみ適用されます。true に設定すると、ユーザーは対応するテキストを編集できなくなりますが、そのテキストにフォーカスすることはできます。また、フォームを送信すると、入力項目がフォームの項目として送信されます。

<<:  jQueryはすべてのショッピングカート機能を実装します

>>:  MySQL の null 制約のケースの説明

推薦する

純粋な CSS 流星群の背景サンプルコード

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアルコード表...

MySQL 5.7.17 最新インストールチュートリアル(画像とテキスト付き)

mysql-5.7.17-winx64 は MySQL の最新バージョンです。インストールは無料で...

vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明

目次1. はじめに2. 使用1. vue2とvue3の違い2. ページ上の一部のデータはキャッシュす...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

Nginx を使用してフロントエンドのクロスドメイン問題を解決する方法

序文Vue アプリケーションなどの静的ページを開発する場合、クロスドメインになる可能性のあるインター...

JavaScript はドラッグ可能なモーダルボックスを実装します

この記事では、ドラッグ可能なモーダルボックスを実装するためのJavaScriptの具体的なコードを参...

Vue はトークンの有効期限が切れると自動的にログインページにジャンプする機能を実装します

このプロジェクトは最近テストされ、テスターから、トークンの有効期限が切れたため、ルートが自動的にログ...

Docker で LNMP 環境を素早く構築する方法 (最新)

序文ヒント: ここで、この記事に記録するおおよその内容を追加できます。例えば、人工知能の継続的な発展...

React Hooksを使用する際のよくある落とし穴

React Hooks は React 16.8 で導入された新しい機能で、クラスを使用せずに状態や...

入力スクリプトなしでタイプ拡張を使用する方法

序文JS の型付けが弱く、記述基準が緩く、開発ツールのサポートが弱いため、前任者のコードをメンテナン...

1 つの記事で JSON (JavaScript Object Notation) を理解する

目次JSONが登場JSON構造JSONオブジェクトJson オブジェクトと JavaScript オ...

Linux/CentOS サーバー セキュリティ構成の一般ガイド

Linux はオープン システムです。インターネット上には、既成のプログラムやツールが多数存在します...

Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

最近、社内に Hadoop テスト クラスターを構築したいので、docker を使用して Hadoo...

JSの高階関数5つを共有する

目次1. はじめに2. 再帰3. コールバック関数3.1 匿名コールバック関数3.2 パラメータ付き...

JavaScript オブジェクトからプリミティブ値への変換の詳細な説明

目次オブジェクトプロトタイプの値()オブジェクトプロトタイプtoString()シンボル.toPri...