按类名验证单选按钮的形式

时间:2014-10-23 13:37:15

标签: javascript jquery html html5 forms

我正在使用以下脚本:

 if($('.fmscr:checked').val()){
        $('.fmscr').closest('.form-group').removeClass('has-error');
        $('.fmscr').closest('.form-group').addClass('has-success');
    }else{
        $('.fmscr').closest('.form-group').addClass('has-error');
        $('.fmscr').closest('.form-group').removeClass('has-success');
    }

在以下收音机的表格中:

    <div class='form-group'>
        <div class='col-xs-12'>
            <p>
            Were you subject to the (FMSCR's) Department of Transportation (DOT) Regulations while employed?<span class='req'> *</span>
            </p>
            <label class='radio-inline'>
                <input type='radio' class='fmscr checked' name='fmscr[]' value='1'> Yes
            </label>
            <label class='radio-inline'>
                <input type='radio' class='fmscr checked' name='fmscr[]' value='-1'> No
            </label>
        </div>
    </div>

有一定数量的单选按钮。上面的脚本在提交时运行,但在检查完两个按钮之前它不会计算单选按钮,也只检查一个单选按钮。那么我在这里做错了什么?我希望无论数量多少都能检查所有单选按钮,并让它们能够正确验证。如果需要任何进一步的信息,请告诉我!提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果您确实有多组radio按钮共享同一个类选择器,则以下代码应该有所帮助:

$('.fmscr:checked').each(function() {
   if( this.value ) {
        $(this).closest('.form-group').removeClass('has-error');
        $(this).closest('.form-group').addClass('has-success');
    } else {
        $(this).closest('.form-group').addClass('has-error');
        $(this).closest('.form-group').removeClass('has-success');
    }
});

答案 1 :(得分:-1)

您的代码

if ($('.fmscr:checked').val())

...仅考虑与选择器匹配的第一个找到的元素。有关详细信息,请参阅此处:http://api.jquery.com/val/ 我并不完全明白你想做什么,但你可以这样试试:

if ($('.fmscr:checked').length > 0 )) // at least one is checked
祝你好运!