0

長年の学習者、初めての質問者...

シナリオ: 列 1 に日付を含む日付の表を表示し、列 2 に理由のドロップダウンを表示するフォームがあります。列 2 の理由が選択されている場合にのみ、フォームを送信できます。ただし、すべての行に理由が必要なわけではありません。つまり、3 番目の日付のみに理由が記載されている場合は、3 つの日付を含むフォームを送信できます。空のメニュー項目は POST で適切に処理されます。

送信ボタンは、2 つの検証チェック マークに基づいて状態を切り替えます (電話番号と電子メールを値として渡し、ユーザーが確認方法を選択します)。意図したとおりに機能する select.val を追加しましたが、最初の選択でのみです。2 番目の選択のみを選択すると、ボタンは無効のままになります。

$('#phone, #email').click(function(){

        if($('#phone, #email').is(':checked') && $('select').val() != "")
        {
            enableSubmit();
        } else {
            disableSubmit();
        }

        $(this).next('#phone, #email');

    });

マークアップの例:

<select id="reason1">
    <option value=""></option> <!--This defaults the field to an empty label-->
    <option value="reason_a">Reason A</option>
    <option value="reason_b">Reason B</option>
    <option value="reason_c">Reason C</option>
</select>

<select id="reason2">
    <option value=""></option> <!--This defaults the field to an empty label-->
    <option value="reason_a">Reason A</option>
    <option value="reason_b">Reason B</option>
    <option value="reason_c">Reason C</option>
</select>

<select id="reason3">
    <option value=""></option> <!--This defaults the field to an empty label-->
    <option value="reason_a">Reason A</option>
    <option value="reason_b">Reason B</option>
    <option value="reason_c">Reason C</option>
</select>

編集

リクエストに応じて: http://jsfiddle.net/paladyn84/6dXmD/4/

4

1 に答える 1

1

これを試してくださいif

if($('#phone, #email').is(':checked') && $('select').filter(function(){
    return $(this).find(':selected').val()
}).length)

ドロップダウンに値があるかどうかを確認します。

ここで少しフィドル:http://jsfiddle.net/e7wSK/1

ちなみに、これの代わりに:

 $('#phone, #email').click(function(){})

変更を使用する必要があります:

 $('#phone, #email, select').change(function(){
于 2013-06-18T22:36:16.443 に答える