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