2012-01-13 9 views
7

そこには、jQueryのにはいくつか提出する方法(POST)が無効のフォームフィールドのように見える:jQueryで無効なフォームフィールドを送信する最も良い方法は?

  • は、入力の変化に変更隠しフィールドを持っている、と
  • は手動時にキー/値のペアを追加することを提出します(値は変更しないと予想されている場合のみ)サーバー側で提出
  • 元に戻す値

は、私は(もしあれば)が無効フォームフィールドを提出するためのベストプラクティスと考えられていると思いまして。明らかにreadOnlyが利用可能な最善の選択肢ですが、(ビジネスロジックのために)無効になっていても提出する必要があるチェックボックスがあります。私はこれが理想的な状況ではないことを認識していますが、Web開発のケースはめったにありません。

無効なフォーム要素を送信するためのベストプラクティスはありますか?

+2

無効なフォーム要素は送信しないでください。これを行う正しい方法は、提出時に隠された入力を作成することです。 HTML文書は次のとおりです。http://www.w3.org/TR/html4/interact/forms.html#successful-controls – Dave

+0

@Daveだから、オプション1が最善の選択だと言っていますか?それは、私が傾いていたものです。また、ドキュメントのおかげで。 – Igor

+0

@GrailsGuyあなたの最初の選択肢に関しては、無効になっているフォームフィールドがある場合、なぜ入力が変わるのですか? –

答えて

7

入力を読み取り専用にする - 単にfalseを返すチェックボックスのクリックイベントを作成し、背景色を変更することです。

ベストプラクティスはありませんが、最小のファッジが必要です。

5

第4の解決には、フォームを送信する前にチェックボックスを有効にするには、次のようになります。あなたはすべてのチェックボックスを再度有効にしたくない場合は

$("form").submit(function() { 
    $("input:checkbox", this).prop("disabled", false); 
}); 

あなたはより洗練されたセレクタを使用することができます。

0

すべてまたは特定のdisbaled入力投稿することが必要な場合は別の方法があります:

  1. ステップ1:クラス名の名前を与える(例えばMODを。)。
  2. ステップ2:をonSubmitは、以下の例以下のすべてのこれらのフィールドが有効:。

    $( "入力[= MODクラス]")をremoveAttr( '無効');

  3. ステップ3:ポストデータ

  4. ステップ4:(必要な場合)以下の例以下、再びこれらのフィールドを無効にします。

    $( "入力[= MODクラス]")のattr( '無効= "無効");

関連する問題