使用JavaScript检查单选按钮的问题

时间:2014-07-07 07:42:55

标签: javascript html radio-button

我正在开发一个JSP页面,它有多个带有ID ans1, ans2, ans3... etc的单选按钮。单选按钮的数量根据前一页的响应而有所不同。用户应为所有单选按钮选择答案。即用户必须为所有单选按钮ans1,ans2,ans3等选择响应。我已经为提交按钮点击事件编写了一个Javascript代码,如下所示进行验证,并确保用户已回复所有答案:

function beforeSubmit(){
    var obj = document.quizcreen;
    var qCount = obj.totQuesHidden.value;
    for (var i=1; i<=qCount; i++){
        if(document.getElementById("ans"+i).checked){
             // checked
        }else{
            alert("Please select ateleast one option");  // unchecked
            return false;
        }
    }
    obj.submit();
    return true;
}

由于某些原因,上面的代码无效。如果未选择所有单选按钮,则不应提交表单。请帮助,我知道这是一个非常简单和常见的问题,但我无法弄清楚。提前谢谢。

以下是表单操作:

<form name="quizcreen" id="quizcreen" method="post" action="QuizResult.jsp" onsubmit = "return beforeSubmit();">

3 个答案:

答案 0 :(得分:3)

循环中有return true语句。因此,当检查第一个radiobutton时,它不会检查其他的。

function beforeSubmit(){
    var obj = document.quizcreen;
    var qCount = obj.totQuesHidden.value;
    var allChecked = true;
    for (var i=1; i<=qCount; i++){
        if(! document.getElementById("ans"+i).checked){
            allChecked = false;
        }
    }

    if(! allChecked){
        alert("Please select ateleast one option");  // unchecked
        return false
    }
    obj.submit();
    return true;
}

答案 1 :(得分:0)

好的,我发现了一种更好的方法来处理我的场景,所以我正在为你的信息分享我的代码:

function beforeSubmit() {
        var obj = document.quizcreen;
        var allChecked = true;
        $("input:radio").each(function() {
            var name = $(this).attr("name");
            if ($("input:radio[name=" + name + "]:checked").length == 0) {
                allChecked = false;
            }
        });
        if (!allChecked) {
            alert("Please answer all the questions."); // unchecked
            return false;
        }
        obj.submit();
        return true;
    }

答案 2 :(得分:-1)

你的问题至少要检查一个。

做这件事

function isRadioChecked() {
return ($('input[type=radio]:checked').size() > 0);

}