web-dev-qa-db-ja.com

各グループから少なくとも1つのラジオボタンが選択されていることを確認します(jqueryを使用)

フォームにラジオボタンの質問を動的にプルして表示しています(jqueryタブによって異なるセクションに分けられています)。

したがって、2、3、4、5などのラジオボタンがたくさんあり、「名前」は同じですがIDが異なります。

次にセクション間を押すと、グループごとに少なくとも1つのラジオボタンが選択されていることを確認したいと思います。

(フォームが読み込まれると、ラジオボタンはデフォルトでチェックされていないため、このようにする必要があります。)

現在のセクションのラジオボタンをループできますが、グループごとにチェックされていることを簡単に確認する方法がわかりません。

13
giom

要素間に関係がない場合、またはグループ名を見つける方法がない場合、私はあなたにポインタを与えることしかできませんが、これは機能するはずです(チェックは_id="nextButton"_の要素をクリックすることによってトリガーされますが、明らかにこれは可能です$('form').submit()などの他の適切なイベントに合わせてカスタマイズ:

_$(document).ready(
function(){
  $('#nextButton').click(
    function(){

    var radioName = something; // use this if there's a relationship between the element
                               // triggering this check and the radio buttons

      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
      }
    }
  );
}
);
_
$("input[@name='the_name']:checked").length;
5
eKek0
if ($("input:checked").length < Num_of_groups)
{
    alert ("Please select atleast one radio button in each group");
    return false;
}
3
Aragorn108

これを試して

if ($('input[name='+radioName+']:checked').length == '0'){
    // do something 
    return false;
}
2
Javid

このコードを使用する

フォームの外にボタンを置くことを忘れないでください

$("#buttonid").click(function(){
                    var check = true;
                    $("input:radio").each(function(){
                        var name= $(this).attr('name');
                        if($("input:radio[name="+name+"]:checked").length){
                            check = true;
                        }
                        else{
                            check=false;
                        }
                    });

                    if(check){
                        $("#formid").submit();
                    }else{
                        alert('Please select at least one answer in each question.');
                    }
                });
1
user11570960

入力名は同じ名前である必要があります:sendType

これをチェックしてください:

$('#submitBtn').click(function(e){

   alert ($('input:radio[name="sendType"]:checked').length);

   if ($('input:radio[name="sendType"]:checked').length > 0) {
       //GO AHEAD

   } else {
       alert("SELECT ONE!");
       e.preventDefault();
   }

});
1