0

私は次のフォームを持っています:

<form action="?" method="post" name="contactform">
<?php if(@$errorsAndNotices):?>
<div class="error">
<p><?php echo @$errorsAndNotices; ?></p>
</div>
<?php endif; ?>

<div class="question">
<p><span><input type="radio" name="answer" value="Yes"/></span> Yes</p>
</div>
<div id="one" class="answers" style="display:none">
<p><input type="radio" name="answerdetail" value="Reason One" /> Reason One</p>
<p><input type="radio" name="answerdetail" value="Reason Two" /> Reason Two</p>
</div><!-- end answers -->

<div class="question">
<p><span><input type="radio" name="answer" value="No"/></span> No</p>
</div>
<div id="two" class="answers" style="display:none">
<p><input type="radio" name="answerdetail" value="Reason One" /> Reason One</p>
<p><input type="radio" name="answerdetail" value="Reason Two" /> Reason Two</p>
</div><!-- end answers -->

<div class="question">
<p><span><input type="radio" name="answer" value="Not sure" /></span> Not sure</p>
</div>
<div id="three" class="answers" style="display:none">
<p>No problem, we’ll drop you an email next week.</p>
</div>

<input type="submit" value="" class="submit" />
</form>

「はい」または「いいえ」のいずれかを選択すると、サブ ラジオ ボタンが表示され、いずれかを選択できます。

次の簡単な検証があります。

orsAndNotices = '';
 if(!@$_REQUEST['answer'])                      { $errorsAndNotices .= "Please select Yes, No or Not sure.<br/>\n"; $nameFail = 1; }
 if(!@$_REQUEST['answerdetail'])                { $errorsAndNotices .= "Please select your answer.<br/>\n"; $emailFail = 1; }

何も選択されていない場合は、必要に応じてエラー通知が表示されます。

「はい」または「いいえ」が選択されているが、サブラジオボタンが選択されていない場合、必要に応じてエラー通知が再び表示されます。

問題は、「わからない」を選択すると、サブラジオボタンが選択されていないため、エラー通知が表示されることです。私はこのエラーを望んでいません。

「はい」または「いいえ」が選択されていて、サブラジオボタンが選択されていない場合にのみ、エラー通知が必要です。が選択されていない場合は、フォームをエラーなしで送信したいと考えています。

これで大丈夫だと思います!

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

1

私は他の人の前にラジオボタンをチェックしNot Sure、他のすべての条件で使用するためにそれをフラグに設定します:

$notSure = (!empty($_REQUEST['answer']) && ($_REQUEST['answer'] == 'Not sure'));

あなたはそれを一緒に使うことができます:

if (!$notSure && !@$_REQUEST['answerdetail']) ...

補足(回答固有ではありません) forエラー抑制
を使用する@と、コードの実行が遅くなる可能性があります。$_REQUEST値が設定されているかどうかを確認するなどの単純なタスクの場合は、次のように、isset()またはempty()代わりに使用することをお勧めします。

if (!$notSure && empty($_REQUEST['answerdetail'])) ...
于 2012-10-09T14:11:26.343 に答える