web-dev-qa-db-ja.com

無効な入力の値は送信されませんか?

これは、firefoxでfireBugが見つけたものです。

他のブラウザでも同じですか?

もしそうなら、この理由は何ですか?

188
omg

はい、すべてのブラウザ しない 無効な入力は読み取り専用であるため、送信しないでください。

詳細 (セクション17.12.1)

属性定義

disabled [CI]フォームコントロールに設定すると、このブール属性はユーザー入力のコントロールを無効にします。設定されると、disabled属性は要素に次の効果をもたらします。

  • 無効なコントロールはフォーカスを受け取りません。
  • 無効なコントロールは、タブナビゲーションでスキップされます。
  • 無効なコントロールは成功できません。

次の要素が無効属性をサポートしています:BUTTON、INPUT、OPTGROUP、OPTION、SELECT、およびTEXTAREA。

この属性は継承されますが、ローカル宣言は継承された値をオーバーライドします。

無効化された要素のレンダリング方法は、ユーザーエージェントに依存します。たとえば、一部のユーザーエージェントは無効なメニュー項目、ボタンラベルなどを「グレー表示」します。

この例では、INPUT要素は無効になっています。したがって、ユーザー入力を受け取ることはできず、その値はフォームとともに送信されません。

<INPUT disabled name="fred" value="stone">

注意。 disabled属性の値を動的に変更する唯一の方法は、スクリプトを使用することです。

172
Aziz

disabled入力はデータを送信しません。

readonly属性を使用します。

<input type="text" readonly />

ここのソース

244
Fred K

それがW3C仕様で言っていることです であるため、送信されません。

17.13.2成功したコントロール

成功したコントロールは、提出に対して「有効」です。 [中略]

  • 無効になっているコントロールは成功できません。

言い換えれば、無効になっているコントロールは無効であると見なされ、送信されるべきではないという仕様です。

21
MiffTheFox

無効化を模倣するために3つのことを使用できます。

  1. HTML:readonly属性(入力に存在する値をフォーム送信で使用できるようにするため。ユーザーは入力値を変更できません)

  2. CSS:'pointer-events':'none'(ユーザーが入力をクリックするのをブロックする)

  3. HTML:tabindex="-1"(キーボードからの入力への移動をブロックするユーザー)

12
Novice_JS

Disabledコントロールは成功できず、成功したコントロールは送信に対して「有効」です。これが、無効化されたコントロールがフォームで送信されない理由です。

2
Juan de Parras