如何选中单选按钮是否被选中

时间:2014-01-05 14:07:39

标签: javascript php jquery arrays

我正在研究测验系统。我想做的就是从数据库中收集问题,并使用php进行如下操作:

<div class="span12" style="margin-top:140px;">
<ul id="part">
<?php //print_r($quiz); 

$i = 1; 
foreach($quiz as $quiz)
{
    echo "<li id='div$i' style='display:none;'>
    <p style='font-size:20px;'><strong>Question $i </strong>: $quiz->Question </p>
    <br/><div style='margin-left:60px;font-size:14px;'>
    <input type='radio' name='op11' id='op1$i' value='1' style='opacity: 0;'>$quiz->op1<br/><br/>
    <input type='radio' name='op11' id='op2$i' value='2' style='opacity: 0;'>$quiz->op2<br/><br/>
    <input type='radio' name='op11' id='op3$i' value='3' style='opacity: 0;'>$quiz->op3<br/><br/>
    <input type='radio' name='op11' id='op4$i' value='4' style='opacity: 0;'>$quiz->op4<br/><br/></div>
    </li>";
    $i++;
}
?>
</ul>
<div class="span6">
<button id="next" class="btn btn-info btn-large" style="float:right;">Next &rarr; </button>
</div>
</div>

现在使用jquery,当我点击下一个按钮时,所选答案的值将被放入一个名为answers的数组中。

当选择答案时,正在创建阵列已更正,但是当我没有选择任何答案时,则先前的值将被推送到数组中。

为此,我使用以下jquery函数:

<script>
$(function(){
    var items = $('ul#part li');
    var answers = new Array();
    if(items.filter(':visible').length == 0)
    {
        items.first().show();
    }
    $('#next').click(function(e){
        //e.preventDefault();
        var active = items.filter(':visible:last');
        active.hide();
        var val = $("input:radio[name=op11]:checked").val();

        console.log(val)
        answers.push(val)
        var next = active.next();
        if (next.length)
             next.show();
        else{
            console.log(answers);
        }

    });
});
</script>

例如:我有三个问题,我分别选择答案2,3,1然后答案数组是[2,3,1],这是正确的但是假设我没有选择任何问题的回答没有两个,第一个和第三个问题的选择答案分别是2,3,那么根据我的代码创建的数组是[2,2,3]。但我需要的是,当我不选择任何答案时,那个答案的值应为0表示上面的例子,数组应为[2,0,3]

我如何实现它,请帮助我纠正代码

3 个答案:

答案 0 :(得分:0)

使用单选按钮:

示例:

if(document.getElementById('op1$i').checked) {
  //radio button is checked

答案 1 :(得分:0)

您应该检查是否已选择当前答案。尝试类似:

if ($("input:radio[name=op11]:checked").length == 1) {
    //One item checked with that name
    var val = $("input:radio[name=op11]:checked").val();
} else { var val=0; }                //or handle the error some other way

答案 2 :(得分:0)

var val = $("input:radio[name=op11]:checked").val();

if (typeof(val) !== "undefined" && val !== null){

    answers.push(val);

}else{
    answers.push(0);
}

您需要检查它是否为null或未定义。如果是(null或undefined)则添加0,否则添加选定的值。