2

ユーザー選択オプションに基づいて、無効なフィールドを表示/非表示にするjQueryコードがあります。

$('.fieldcontent').not('.info').hide();

$('#selector_cs').change(function() {
    $('.fieldcontent').customFadeOut(100);
    $('.' + $(this).val()).customFadeIn(900);
    $('input').prop('disabled',false);
    $('textarea').prop('disabled',false);
    $('select').prop('disabled',false);
});

});

大きな頭痛の種は、1 つ以上のフィールドがフェードインしている場合、これらのフィールドが私の php 検証に合格せず、フォームを送信しないことです。

すべてのブラウザーで JavaScript が無効になっている場合、フォームは完全に機能します。

PHPの検証は

if(!isset($_POST['products'])) {
$products[2] = clean_var($_POST['products']);
  }
 else {
  $error = 1;
   $products[3] = 'color:#FF0000;';
  }

すべてのフィールド

php / jqueryソリューションはありますか(フォーム全体を再度作成することはなく、ajaxについて何も知らないため、ajaxは使用しないでください)?

助けてくれてありがとう

編集: 別のエラーが検出されました: jquery スクリプトがフォームの別のセクションにフェードインすると、PHP はそれを検証しなくなります。なんで?php-jquery でこのような問題が発生したことはありません。

4

1 に答える 1

0

それらを有効のままにして、プロパティtypehiddenthenに変更すると、送信時にPHPにフィールドが表示されます。

更新
次のシナリオはどうですか。

  • 表示されている5つのフィールド
  • 開始-2つのフィールドの非表示(A + B)
  • A + Bと同じ名前の2つのフィールドを「追加」type=hiddenし、現在の値をA+Bから`A+`Bにコピーします。
  • PHPは、現在フェードアウトしているフィールドではなく、これら2つの非表示フィールドを確認する必要があります。
  • ユーザーがフェードアウト中に送信しなかった場合、フィールドがフェードアウトしたときに、 `A +` Bフィールドを削除し、2つのフェードフィールドのプロパティを次のように設定します。hidden
  • これを逆にして、フィールドを再度表示します。

これはPHPが原因の問題ではなく、ブラウザがフォームフィールドをフォームの送信時に送信される有効なフォームフィールドとして解釈する方法/タイミングが原因であることに注意してください。

于 2013-03-20T16:42:10.150 に答える