Javascript 带验证的jQuery循环

Javascript 带验证的jQuery循环,javascript,jquery,Javascript,Jquery,我有一个jQuery循环,它查看页面上的单选按钮并确保它们被选中 该功能正在工作,但有一个小故障,我知道为什么;只是不知道如何修复它 // Validate the proficiencies var names = {}; $('.radio').filter(':radio').each(function(){ var name = $(this).attr('name'); if( undefined === names[name] ){ names[nam

我有一个jQuery循环,它查看页面上的单选按钮并确保它们被选中

该功能正在工作,但有一个小故障,我知道为什么;只是不知道如何修复它

// Validate the proficiencies
var names = {};
$('.radio').filter(':radio').each(function(){
    var name = $(this).attr('name');
    if( undefined === names[name] ){
        names[name] = false;
    }
    if( $(this).is(':checked') ){
        names[name] = true;
    }
});

$.each(names, function(name, val){
    if( !val ){
        theTab = 'proficienciesTab';
        $('.nav-tabs a[href="#' + theTab + '"]').tab('show');
        $('[name="'+name+'"]').closest('tr').addClass('danger');
        $('[name=error]').empty().append('<div class="alert alert-danger" role="alert"><i class="fa fa-ban"></i>&nbsp;&nbsp;Please complete all proficiencies.</div>');
        hasError = true;
    }else{
        $('[name="'+name+'"]').closest('tr').removeClass('danger');
        hasError = false;
    }
});

if(!hasError){
    //process form
}
//验证熟练程度
变量名称={};
$('.radio').filter(':radio').each(function(){
var name=$(this.attr('name');
如果(未定义===名称[名称]){
名称[名称]=假;
}
如果($(this).is(':checked')){
名称[名称]=真;
}
});
$.each(名称、函数(名称、val){
如果(!val){
theTab=‘熟练度测试’;
$('.nav tabs a[href=“#'+theTab+'”).tab('show');
$(“[name=“”+name+“]”)。最近('tr')。addClass('danger');
$('[name=error]')。empty().append('Please complete all proficiencies');
hasrerror=true;
}否则{
$(“[name=“”+name+“]”)。最近('tr')。removeClass('danger');
hasError=false;
}
});
如果(!hasError){
//过程形式
}
问题出现在
$中。每个
循环中。如果有10个单选按钮,并且所有按钮都未选中,则可以正常工作,因为它们都返回false

但是,如果我只检查最后一个单选按钮,它将为所有按钮返回false,然后在最后一个按钮返回true,因此最后的
hasrerror
值将为true,从而执行下一段代码并处理表单

如果我只是在这里
返回false
如果(!val){}
它不会将类添加到缺少的类中,它只会将它添加到它找到false的第一个类中


如何修复此问题?

在循环开始之前设置
hasError=false
。 然后,仅在发生错误时设置
hasError=true

最后一个好值永远不会覆盖假值

hasError = false;
$.each(names, function(name, val){
        if( !val ){
            theTab = 'proficienciesTab';
            $('.nav-tabs a[href="#' + theTab + '"]').tab('show');
            $('[name="'+name+'"]').closest('tr').addClass('danger');
            $('[name=error]').empty().append('<div class="alert alert-danger" role="alert"><i class="fa fa-ban"></i>&nbsp;&nbsp;Please complete all proficiencies.</div>');
            hasError = true;
        }else{
            $('[name="'+name+'"]').closest('tr').removeClass('danger');
        }
    });
hasrerror=false;
$.each(名称、函数(名称、val){
如果(!val){
theTab=‘熟练度测试’;
$('.nav tabs a[href=“#'+theTab+'”).tab('show');
$(“[name=“”+name+“]”)。最近('tr')。addClass('danger');
$('[name=error]')。empty().append('Please complete all proficiencies');
hasrerror=true;
}否则{
$(“[name=“”+name+“]”)。最近('tr')。removeClass('danger');
}
});

如果你能包含一个演示问题的示例,那就太棒了。谢谢你-我已经默认为false了,只需删除
hasError=false行