Readonlyと無効化の両方により、ユーザーはフォームフィールドのコンテンツを変更しないようにします。しかし、それらの間にはわずかな違いがあり、要約は次のとおりです。
readonlyは入力(テキスト/パスワード)とTextareaでのみ機能しますが、無効はすべてのフォーム要素で有効です。ただし、フォーム要素が無効に使用された後、フォームを投稿またはGETで送信すると、この要素の値は渡されず、Readonlyは値を渡します(ReadOnLyは値の変更を受け入れ、渡され、無効になり、変更を受け入れますが、データを返しません)。
一般に、最も一般的に使用される状況は次のとおりです。
ユーザーにはフォームで一意の識別コードが充填されており、ユーザーは変更を許可していませんが、送信時に値を渡す必要があり、そのプロパティは読み取るように設定する必要があります。
ユーザーがフォームを正式に提出し、管理者の情報が検証するのを待つ必要がある場合に遭遇することがよくあります。これにより、ユーザーがフォーム内のデータを再度変更することはできませんが、表示するだけです。無効化された要素の範囲は大きいため、現時点では無効を使用する必要がありますが、同時に、送信ボタンも無効にする必要があることに注意する必要があります。それ以外の場合、ユーザーがこのボタンを押す限り、データベース操作ページで整合性検出が実行されない場合、データベースの値がクリアされます。この場合、無効化する代わりにreadonlyを使用している場合、フォームに入力(テキスト/パスワード)とテキストレア要素のみがある場合、それはまだ可能です。選択など、他の送信要素がある場合、ユーザーは値を書き換えた後にEnterキーを押して送信できます(Enterはデフォルトの送信トリガーキーです)
多くの場合、JavaScriptを使用して、ユーザーが送信ボタンを押した後に送信ボタンを無効にします。これにより、ユーザーがネットワーク条件が低い環境で送信ボタンを繰り返しクリックすることができなくなり、データがデータベースに冗長に保存されます。
障害者と読み取りの2つのプロパティには、いくつかの共通点があります。たとえば、両方がtrueに設定されている場合、フォームプロパティは編集されません。 JSコードを書くときに、これら2つのプロパティを簡単に混ぜることができることがよくあります。実際、それらには特定の違いがあります。
入力アイテムの無効がtrueに設定されている場合、フォーム入力アイテムはフォーカスを取得できず、すべてのユーザーの操作(マウスクリックやキーボード入力など)が入力アイテムに対して無効です。最も重要な点は、フォームが送信されると、フォーム入力項目が送信されないことです。
Readonlyは、テキスト入力ボックスなどのテキストを入力できる入力アイテムのみです。 Trueに設定されている場合、ユーザーは対応するテキストを編集することはできませんが、フォーカスに焦点を合わせることができ、フォームを送信する場合、入力アイテムはフォームとして送信されます。