0

複数の質問があるフォーム (動的に作成されたアンケート) があります。jQuery を使用してラジオをボタン (http://jqueryui.com/demos/button/#radio) としてスタイル設定しましたが、ここではコードを少し削減しました...

<div class="yesnoradios">
    <input type="radio" name="section<%= section %>_question<%= question %>" id="section<%= section %>_question<%= question %>_Y" value="Y" />Yes
    <input type="radio" name="section<%= section %>_question<%= question %>" id="section<%= section %>_question<%= question %>_N" value="N" />No
    <input type="radio" name="section<%= section %>_question<%= question %>" id="section<%= section %>_question<%= question %>_NA" value="NA" />N/A
</div>

したがって、動的に名前が付けられた上記の複数のインスタンスがありますid

送信時にフォームをクライアント側で検証するのに苦労しています。私がしなければならないことは、質問ごとに 1 つの回答が選択されるようにすることです。私は jQuery の経験があまりないので、これまでに行ったことは、各質問をループすることだけです。

$('.yesnoradios').each(function(index) {
    alert($(this).attr("id"));
});

英語でページを表示する場合、selectラジオ ボタンの代わりに 's を使用しているため、問題なく検証できますが、この例でそれを使用できない理由は、ユーザーが質問の構成によって「はい」または「いいえ」に相当する言語が異なるため、チェックマークとバツ印を使用しています。

助けてくれてありがとう。

編集:私がやろうとしたことは、.children() 関数を使用して、チェックされているかどうかを確認し、そうでない場合はフォームが無効であることを示すフラグを設定することです。しかし、構文を正しく理解できず、これに適したコード サンプルをまだ見つけることができませんでした。

4

3 に答える 3

4

あなたが以下をたくさん持っていると仮定して...

<div class="yesnoradios">
    <input type="radio" name="section<%= section %>_question<%= question %>" id="section<%= section %>_question<%= question %>_Y" value="Y" />Yes
    <input type="radio" name="section<%= section %>_question<%= question %>" id="section<%= section %>_question<%= question %>_N" value="N" />No
    <input type="radio" name="section<%= section %>_question<%= question %>" id="section<%= section %>_question<%= question %>_NA" value="NA" />N/A
</div>

これを使用して、次のコードを使用して、すべてのグループの少なくとも1つが選択されているかどうかを確認できます。

$('.yesnoradios input[type=radio]:checked').length

これにより、チェックされたグループの正確な数がわかります。noで確認してくださいclass="yesnoradios"。同じnoがある場合は、各yesnoradiodivの少なくとも1つの無線がチェックされています。

if($('.yesnoradios').length == $('.yesnoradios input[type=radio]:checked').length){
    //all groups have at least one radio checked
}else{
    //not all are chedked and you can loop your else logic here
}

注: 1つのグループ内のすべてのラジオは同じ名前である必要があります...そして、ここにレンダリングされていないhtmlを投稿したので、そうしていると思います。

于 2012-07-13T10:07:58.390 に答える
3
if ($('input[name='+ radioName +']:checked').length) {
           // at least one of the radio buttons was checked
           return true; // allow whatever action would normally happen to continue
      }
      else {
           // no radio button was checked
           return false; // stop whatever action would normally happen
      }
于 2012-07-13T09:50:31.333 に答える
0

これを試して。あなたのhtmlは次のようになります

radio buttons with class "optionCls" in a div with id question1
radio buttons with class "optionCls" in a div with id question2
.
.

これで、次のように参照できます

if($('#question1.optionCls :checked').length() > 0) 
     alert('valid'); //will tell you for question1 whether answer is selected or not

ロジックを構築して動的にする

于 2012-07-13T10:03:36.407 に答える