使用页面上的jquery获取单选按钮的所有值

时间:2015-11-25 19:34:04

标签: jquery asp.net-mvc radio-button

我有4个问题,每个都有两个单选按钮。用户必须为每个问题选择是或否。

用户必须在所有问题中回答“是”才能继续使用该应用。 使用下面的jquery代码,如果用户只回答2个问题,则tempArray变量中仅报告2个答案。

我希望能够在tempArray中看到所有4个答案是否得到回答。然后我将能够遍历数组并确定 答案为空或否

实施例 全部回答 1.是 2.Yes 。是的 4.Yes

没有全部回答 是的 2.空 3.空 4.没有

        <script language="javascript" type="text/javascript">    

            $('#Continue').click(function () {

                var $RButtons = $('input[type="radio"]');
                var tempArray = new Array();

                var i = 0;
                jQuery.each($RButtons, function () {
                    if ($(this).is(':checked')) {
                        var value = $(this).attr('value');
                        tempArray[i] = value;
                        i++;
                    }
                });

            })

        </script>

3 个答案:

答案 0 :(得分:0)

我没有测试过这个问题,但我发现您的代码存在一些问题:

        $('#Continue').click(function () {

            var $RButtons = $('input[type="radio"]');
            var tempArray = new Array();

            var value;
            jQuery.each($RButtons, function () {
                if ($this.prop('checked', true)) { // jQuery 1.6+
                    value = $(this).val();
                    tempArray.push(value);
                }
            });
        })
  1. 您可以使用$this.prop("checked", true)检查单选按钮是否已选中(jQuery 1.6 +)
  2. 您应该简单地使用$(this).val()来确定复选框的值。
  3. 您不必在外观中使用计数器,只需使用.push
  4. 即可

    希望有所帮助。

答案 1 :(得分:0)

你必须跳过两个。

    var $rb = $('input:radio')
    var tempArray = new Array();
    var questionNo = 0;
    for (var i = 0; i < $rb.length; i += 2) {
      tempArray[questionNo] = "Question " + (questionNo + 1) + " is ";
      if ($($rb[i]).is(':checked')) {            
        tempArray[questionNo] += $($rb[i]).attr('value');
      }
      else if ($($rb[i + 1]).is(':checked')) {
        tempArray[questionNo] += $($rb[i + 1]).attr('value');
      }
      else {
        tempArray[questionNo] += " is null";
      }
      questionNo++;
    }

答案 2 :(得分:0)

你可以试试这个。

$('#Continue').click(function () {
              $('div').empty();
                var tempArray = new Array();
                     for ( var i=1; i <= 4; i++)
                     {    
                         var name = "q" + i;
                         var answered = false;
                         $('input:radio[name="' + name + '"]').each(function () {                                  
                          if(!answered)
                          {
                              if($(this).is(":checked"))
                              {
                                  tempArray.push("Question : "  + i + ", Answer : " +  $(this).attr("value"));
                                  answered = true;                                 
                              }                              
                          }
                         });
                         if(!answered)   
                              tempArray.push("Question : "  + i + ", Answer : Null ");
                     }


    $.each(tempArray,function(i)
                 {
                     $('div').append(tempArray[i] + "<br/>");
                 });



            });

工作示例:http://jsfiddle.net/86829ryz/17/