如何勾选表单中的任何给定复选框?

时间:2016-04-06 14:05:31

标签: php html5 checkbox echo

for ($i=0; $i<$total_questions_for_exam; $i++) {


        $question_id= $question_and_answers[$i]['question_id'];
        $numberofanswersperquestion = count_answers_belongToOne_questionNew($question_id);
        //die(var_dump($question_id)); 
        $student_answer_per_question = retrieve_student_result ($_SESSION['user_id'], $_GET['quiz_id'], $question_id);
        $correct_answer = $numberofanswersperquestion[0]['answer_name'];

         echo ' <form method="post" id="review_form" name="review_form" action="view_user_summary.php">   
            <table class="table table-bordered table-condensed table-datatable table-hover review_marks">
                <tbody>

                    <tr>
                        <td style="text-align: left;" width="100%"><strong>Question '. ($i+1) .'</strong></td> 
                    </tr>
                    <tr>
                        <td style="text-align: left;" width="100%">' . $question_and_answers[$i]['question_name'] .'</td>
                    </tr>';

                    if($student_answer_per_question == '') 
                      echo  '<tr>
                                <td style="text-align: left;" width="100%" class="warning"><em>Question Not attempted</em><br><strong>Correct Answer is </strong><br>' . $numberofanswersperquestion[0]['answer_name'] . '</td>
                            </tr>';

                    else if ($student_answer_per_question == $correct_answer)

                     echo  '<tr>
                                <td style="text-align: left;" width="100%" class="success"><strong>Your answer is correct.</strong><br>' . $student_answer_per_question .'</td>
                            </tr>';

                    else 
                        echo    '<tr>
                                    <td style="text-align: left;" width="100%" class="danger">
                                        <table style="width: 100%">
                                            <tbody>
                                                <tr>
                                                    <th style="width: 50%"><strong>Your Answer</strong></th>
                                                    <th style="width: 50%"><strong>Correct Answer</strong></th>
                                                </tr>
                                                <tr>
                                                    <td style="width: 50%">' . $student_answer_per_question . '</td>
                                                    <td style="width: 50%">' . $correct_answer .'</td>
                                                </tr>
                                            </tbody>
                                        </table>
                                    </td>
                                </tr>';

                    echo 

                    '<tr>
                        <td style="height: 5px;" width="100%">&nbsp;</td>
                    </tr>

                    <tr>
                    <td style="height: 5px;" width="100%">&nbsp;</td>
                    </tr>

                </tbody>
            </table>

            <div class="[ form-group ] correct_answer">
                <input type="checkbox" name="fancy-checkbox-primary"  id="fancy-checkbox-primary" autocomplete="off" />
                <div class="[ btn-group ]">
                    <label for="fancy-checkbox-primary" class="[ btn btn-primary ]">
                        <span class="[ glyphicon glyphicon-ok ]"></span>
                        <span> </span>
                    </label>
                    <label for="fancy-checkbox-primary" class="[ btn btn-default active ]">
                        Correct Answer
                    </label>
                </div>
            </div>';

}

echo '<button class="btn btn-large btn-block btn-primary submitbutton" type="submit" style="margin-top:100px;" name="submit_review">Submit Review</button></form>';

大家好,上面的代码基本上只是在我的数据库中提取所有问题和asnwers。我想要实现的是在这个for循环中有一个复选框,允许用户勾选方框表示答案是正确的,或者如果他们不做任何事情,则认为答案是错误的。

Screenshot of how it looks

它显示为我想要它只是一个问题,当我点击第二个复选框,第一个仍然滴答作响,我没有控制第二个复选框。知道如何解决这个问题吗?

认为显示我的意思的视频是一个好主意,我提供了一个链接。

Problem

1 个答案:

答案 0 :(得分:1)

你有一个循环:

<input type="checkbox" name="fancy-checkbox-primary" id="fancy-checkbox-primary" autocomplete="off" />

这意味着您的复选框都具有相同的id。这是无效的标记,并且尝试使用id的任何代码的行为都将是未定义的。 (它可能会找到第一个匹配元素,最后一个匹配元素,所有匹配元素,没有匹配元素等)

顾名思义,id旨在识别元素。您需要更正标记,以便可以正确识别元​​素,以及调整使用这些元素识别它们的任何代码。

这可能涉及在循环中向id附加值,使每个值都是唯一的。或者也许使用class代替id。从问题中的代码我不能真正地与后者对话,但前者应该足够简单:

<input type="checkbox" name="fancy-checkbox-primary" id="fancy-checkbox-primary-' . $i . '" autocomplete="off" />

(注意:我并不完全熟悉你用来设置这些复选框样式的机制,显然这里有一些插件。你可能还需要类似地修改name和/或与此for值相关联的id属性。基本上代码中显示的任何内容,无论是问题还是其他内容,都依赖于id。)

尽管仍然没有100%清楚这对问题中包含的代码而不是的含义是什么,所以你可能需要修补自己的需求。但从根本上说,这里的问题是重复的id值。