Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中选中单选按钮的问题_Javascript_Html_Radio Button - Fatal编程技术网

JavaScript中选中单选按钮的问题

JavaScript中选中单选按钮的问题,javascript,html,radio-button,Javascript,Html,Radio Button,我正在处理一个JSP页面,该页面有多个单选按钮,ID分别为ans1、ans2、ans3。。。etc。。单选按钮的数量取决于上一页中的响应。用户应选择所有单选按钮的答案。i、 e.用户必须为所有单选按钮ans1、ans2、ans3选择响应。。。我已经为提交按钮点击事件编写了Javascript代码,如下所示,用于验证并确保用户已响应所有答案: function beforeSubmit(){ var obj = document.quizcreen; var qCount = ob

我正在处理一个JSP页面,该页面有多个单选按钮,ID分别为ans1、ans2、ans3。。。etc。。单选按钮的数量取决于上一页中的响应。用户应选择所有单选按钮的答案。i、 e.用户必须为所有单选按钮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;
}
提交之前的函数(){
var obj=document.quizcreen;
var qCount=obj.totQuesHidden.value;

对于(var i=1;i您的循环中有一个
return true
语句。因此,当选中第一个单选按钮时,它不会检查其他单选按钮

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;
}
提交之前的函数(){
var obj=document.quizcreen;
var qCount=obj.totQuesHidden.value;
var allChecked=true;

对于(var i=1;i,您的问题至少需要检查一个

做这件事

function isRadioChecked() {
return ($('input[type=radio]:checked').size() > 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;
    }

循环将遇到一个选中的收音机,然后
返回true
,在这种情况下您希望发生什么?忽略选中循环中的返回true。我正在尝试一些东西,这就是为什么我把它放在那里。我删除了调试代码,并添加了真实代码。您是否在某处看到jQuery标记?哦!对不起,我说了最短的方法。Actually它应该可以工作,但表单仍在提交中,尽管我没有选择所有单选按钮。下面是表单操作:如果我删除onsubmit=“return beforesmit();”,那么表单将在Javascript验证的情况下提交(如果onsubmit=“return beforesmit();”是否存在)javascript函数被调用两次,警报被生成两次。再次感谢您的帮助。@Sid对我有效。我唯一更改的是qCount。可能尝试警报此值,检查它是否已填充?
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;
    }