1

UX拡張の目的でのみ、単純なフォーム検証の事前送信を実行しようとしています。私が抱えている問題は.val()、最初のフォームフィールド値のみを返し、残りを無視することです。

jQuery

        $('#pForm').submit(function(){
            var print = $(".option:checked").val();
            var design = $(".option:checked").val();
            var error = "Please select a design service...";

            if(print == 'p10','p20','p30','p40','p90','p00'
            && design == 'd10','d20','d30','d40','d00') {

               alert(print);
               alert(design);

               return true;

            } else {

               alert(error);
               return false;

            }

        });

HTML(サンプルコード)

各ラジオには次のようなラベルが付いています。

<label><input type="radio" name="design" class="option" data-number="<?php echo $var ?>" value="d40"/></label>
<label><input type="radio" name="design" class="option" data-number="<?php echo $var ?>" value="d30"/></label>
<label><input type="radio" name="design" class="option" data-number="<?php echo $var ?>" value="d20"/></label>

<label><input type="radio" name="print" class="option" data-number="<?php echo $var ?>" value="p40"/></label>
<label><input type="radio" name="print" class="option" data-number="<?php echo $var ?>" value="p30"/></label>
<label><input type="radio" name="print" class="option" data-number="<?php echo $var ?>" value="p20"/></label>

最終的には、印刷ラジオフィールドとデザインラジオフィールドから値を選択しない限り、フォームを送信したくありません。チェックに失敗した場合error、ユーザーにメッセージを表示したいと思います。

*上記のコードの一部は半疑似である可能性があります助けてくれてありがとう!:)

4

3 に答える 3

2

OK、これで何をしようとしているのかが明確になったので、これを実行して、各グループにチェックされている項目があることを確認します。

if (!$(".design:checked").length || !$(".print:checked").length) {
   // something is not selected
}

両方に選択された値があることを確認すると、次のコードでチェックされる最初の項目の値を取得できます。

 var print = $(".print:checked").val();
 var design = $(".design:checked").val();
于 2012-10-23T23:45:38.723 に答える
2

val()は、常に最初の要素の値のみを返します。 http://api.jquery.com/val/

マップを使用した適切な解決策については、この質問を参照してください: jQueryオブジェクトから値の配列を取得する

于 2012-10-23T23:46:22.800 に答える
-1

あなたは近くにいます。これを試して。

if((print == '') || (design == '')) {

       //error 
}
于 2012-10-23T23:47:15.360 に答える