动态无线电组的jquery表单验证

时间:2014-09-09 03:40:40

标签: javascript jquery validation radiobuttonlist

基本上,我需要验证动态生成的表单(无限数量)并由成对的无线电组组成。我已经取得了很好的进展,但现在我被困住了。用例:如果用户选择一对中的第一个无线电,则会出现隐藏的下拉列表。用户必须从该下拉列表中选择一个选项(但不是第一个选项,因为它是占位符文本)以使该对有效。现在,我的脚本接受“请选择”作为有效选项,而不应该。

我有一个jsfiddle:http://jsfiddle.net/dhLx7hnc/

这是我的jquery:

$(".select-suboption, .see-address").hide();

$('.show').bind('change',function(){

    if ($(this).val() == 1) {
        $(this).siblings('.select-suboption').show();
        $(this).siblings('.see-address').hide();
    } else if ($(this).val() == 2) {
        $(this).siblings('.see-address').show();
        $(this).siblings('.select-suboption').hide();
    } 
});

$(function () {
    $('#validate').click(function () {

        //Make groups
        var names = []
        $('input:radio').each(function () {
            var rname = $(this).attr('name');
            if ($.inArray(rname, names) == -1) names.push(rname);
        });

        $.each(names, function (i, name) {
            if ($('input[name="' + name + '"]:checked').length == 0) {
                alert('Please check ' + name);
            } 
        });
    });
});

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

尝试

$(function () {
    $('#validate').click(function () {

        //Make groups
        var names = $('input:radio[value="1"]').map(function () {
            return this.name;
        }).get();

        $.each(names, function (i, name) {
            var $checked = $('input[name="' + name + '"]:checked');
            if ($checked.length == 0) {
                console.log('Please check ' + name);
            } else if ($checked.val() == 1 && $checked.nextAll('.select-suboption').find('select').val() == 0) {
                console.log('Please select suboption for ' + name);
            }
        });
    });
});

演示:Fiddle