繁体   English   中英

单选按钮未正确验证

[英]Radio buttons not validating correctly

我有这个问卷,我用来开始一个应用程序。 我在提交之前使用javascript进行验证,但我遇到的问题是,它只验证每个问题上的第二个按钮,而不是单独验证每个问题。 我在下面发布了代码。

调查问卷

<?
    for($i = 1; $i <= count($questions); $i++){
        print "<div class='form-group'>";
            print "<div class='col-md-12'>";
                print "<p>$i) ".$questions[$i-1]."</p>";
                print "<label class='radio-inline'>";
                    print "<input type='radio' name='q$i' value='1'>Yes";
                print "</label>";
                print "<label class='radio-inline'>";
                    print "<input type='radio' name='q$i' value='-1'>No";
                print "</label>";
            print "</div>";
        print "</div>";
    }
?>

使用Javascript

$(function(){
    $('#questionaire-form').submit(function(e){
        e.preventDefault();
        var prevname = "";
        var questions = [];
        $('.radio-inline').each(function(){
            //$(this).next($(this)).is(':checked'));            
            var curname = $(this).find('input[type="radio"]').attr('name');
            if(prevname == curname){
                if(!$(this).find('input[name='+curname+']').is(':checked') && $(this).closest('div').find('p').hasClass('text-danger')){
                    return true; //skip to the next element
                }else if(!$(this).find('input[name='+curname+']').is(':checked') && !$(this).closest('div').find('p').hasClass('text-danger')){
                    $(this).closest('div').find('p').addClass('text-danger');
                }else if($(this).find('input[name='+curname+']').is(':checked') && $(this).closest('div').find('p').hasClass('text-danger')){
                    $(this).closest('div').find('p').removeClass('text-danger');
                }else{
                    $(this).closest('div').find('p').removeClass('text-danger');
                }
            }
            prevname = curname;
        });
        var go;
        $('.radio-inline').closest('div').find('p').each(function(){
            if($(this).hasClass('text-danger')){
                go = false;
                return false;
            }else{
                go = true;
            }
        });
        if(go){

        }
    });
});

如有需要,请询问更多信息。 我已经坚持了一段时间了,我想快点解决它。 单选按钮验证一直是我的弱点,所以征服今天会很棒

这个怎么样 :

var go = true;
$(".form-group").each(function () {
     if($(this).find('input[type="radio"]:checked').length == 0) {
         //nothing checked so error.
         $(this).find('p').addClass('text-danger');
         go = false;
     }
     else {
         $(this).find('p').removeClass('text-danger');

     }


});
if(!go)
{return false;}

//continue and do what you like

UPDATE

测试小提琴: http//jsfiddle.net/6k0nusfb/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM