2009-08-31 27 views
134

これは私がfirefoxでfirefoxで見つけたものです。無効な入力値は送信されませんか?

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

もしそうなら、これはなぜですか?

+17

'readonly'属性を設定できます。たとえば、Chromeは無効なフィールドとしてレンダリングしますが、送信します。 – peterrus

+4

[無効なフォーム入力は要求に表示されません]の重複している可能性があります(http://stackoverflow.com/questions/7357256/disabled-form-inputs-do-not-appear-in-the-request) – hazzik

答えて

129

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

More info(セクション17.12.1)

項目が

無効[CI]フォームコントロールのために設定した場合、このブール属性 は、ユーザ入力のための制御を無効にする定義。設定すると、無効な属性 は、要素に次のような影響を与えます。

  • 無効なコントロールはフォーカスを受けません。
  • 無効になったコントロールは、タブ移動ではスキップされます。
  • 無効なコントロールは正常に実行できません。 BUTTON、INPUT、 OPTGROUP、OPTION、SELECT、及びTEXTAREA:

次の要素がdisabled属性をサポートしています。

この属性は継承されますが、ローカル宣言は継承された値 よりも優先されます。

無効な要素のレンダリング方法は、ユーザーエージェントによって異なります。 の例では、いくつかのユーザーエージェントが無効になっているメニュー項目、ボタン ラベルなどを表示します。

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

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

注意。無効にされた 属性の値を動的に変更する唯一の方法は、スクリプトによるものです。

+59

回避策:追加無効な入力と同じ名前/値を持つ ''要素です。 –

+0

ブラウザーはどのような情報を受けていますか? – Allisone

+2

@ JohnKugelman良いアイデアだが、間違って隠された属性に誤って無効な属性を追加しないようにしてください。私はこれをしました: $( '#thingy')val(何でもいい).not( '[type = hidden]')attr( 'disabled'、 'disabled') –

17

that's what it says in the W3C specのように送信されません。

17.13.2成功コントロール

成功した制御が提出のための "有効" です。 [snip]

  • 無効になっているコントロールは正常に実行できません。言い換えれば

、スペックが無効になっているコントロールが無効とみなされ、提出されるべきではないと述べています。

178

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

readonly属性を使用します。

<input type="text" readonly /> 

Source here

+11

これは選択タグでは機能しません! – shareef

+0

@shareef http://jsbin.com/diloha/1/これはいかがですか? –

+0

@FrankFang、Ok、しかし、私はLaravel collectiveのブレードテンプレートにデータを渡しています。それは動作しません。そのようにデータを送信することはできません。 –

1

Disabledコントロールが成功することはできません、そして成功した制御が提出する "有効" です。 これは、無効化されたコントロールがフォームに提出しない理由です。

関連する問題