gpt4 book ai didi

javascript - 带验证的 jQuery 循环

转载 作者:行者123 更新时间:2023-12-03 12:03:24 25 4
gpt4 key购买 nike

我有一个 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
}

问题出在 $.each 循环中。如果有 10 个单选按钮并且全部未选中,则效果很好,因为它们都返回 false。

但是,如果我只检查最后一个单选按钮,它将对所有单选按钮返回 false,然后对最后一个单选按钮返回 true,因此最终 hasError 值将为 true,从而执行下一部分代码和处理表单。

如果我只是在这里 return false if( !val ){ } 它不会将类添加到缺少的类中,它只会将其添加到第一个类中它发现错误。

我该如何解决这个问题?

最佳答案

在循环开始之前设置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');
}
});

关于javascript - 带验证的 jQuery 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com