フォームのHTML標準は、無効化された入力要素がフォームの名前/値のコレクションに寄与しないように見えます。
これを回避する方法はありますか?無効化のオンとオフを切り替えることができる必要がありますが、それでもフォームが送信されたときに値が何であっても返します。
フォームを送信する前にJavaScriptを使用して値を非表示の入力にコピーできることを認識していますが、そうしないことを望みます。よりクリーンな方法はありますか?
私はASP.NETを使用していますが、それは重要ではありません。
readOnly
ではなく、disabled
フラグを使用する必要があります。読み取り専用フィールドはユーザーが編集することはできませんが、フォームとともに送信されます。
<input type="text" value="blah" readonly="true"/>
フォームのHTML標準は、無効化された入力要素がフォームの名前/値のコレクションに寄与しないように見えます。
それは正しいです。
ハック:送信時にJavascriptを使用できます。
値をreadonlyにすると、無効にする代わりに、フィールドの名前/値が、無効になっていない残りのフィールドとともに送信されます。
読み取り専用フィールドのフォーカスイベントハンドラーがフォーカスを次の適格なフィールドに渡し、無効化された要素のように機能するようにします。一部のブラウザでは、読み取り専用フィールドにフォーカスして選択できるほか、読み取り専用フィールドに貼り付けることもできますが、元の値onblurおよびonchangeに戻ります。
<input type="text" value="" readonly="readonly">
コントロールを無効にする場合、Wayneのハック(Backボタンのプッシュで混乱する可能性があります)のわずかに堅牢なバリアントとして:set readonly= true
およびclassName= 'disabled'
の代わりに disabled= true
、次にスタイル.disabled
無効なフィールドに似ています。
入力が無効になっている間、データフィールドに値を保存するクイック(Jqueryのみ)プラグインを作成しました。これは、フィールドが.prop()または.attr()...を使用してjqueryを介してプログラムで無効にされている限り、.val()、. serialize()または.serializeArra()によって値にアクセスすると、常に無効にしても値:)
そのシンプルな2つのステップ
アクセスしたい入力が「無効」属性を削除する場合、無効になっているかどうかを確認します
値を取得してから、無効化された属性を再度追加します。