Javascript 是否可以将';选中复选框的数量限制';以多种形式进入循环?

Javascript 是否可以将';选中复选框的数量限制';以多种形式进入循环?,javascript,html,forms,loops,checkbox,Javascript,Html,Forms,Loops,Checkbox,我正在创建一个页面,用户将填写由多个表单组成的表单。每种形式都有不同的最大可能答案数。如何最小化代码行数并将此代码放入循环中?我尝试基于数组进行循环,但我仍然不知道如何在每次循环时更改$(“input[name='Pytanie1'])。我想将javascript放入循环中: $(document).ready(function () { $("input[name='Question1']").change(function () {

我正在创建一个页面,用户将填写由多个表单组成的表单。每种形式都有不同的最大可能答案数。如何最小化代码行数并将此代码放入循环中?我尝试基于数组进行循环,但我仍然不知道如何在每次循环时更改
$(“input[name='Pytanie1'])
。我想将javascript放入循环中:

        $(document).ready(function () {
            $("input[name='Question1']").change(function () {
                var maxAllowed = 2; 
                var cnt = $("input[name='Question1']:checked").length;
                if (cnt > maxAllowed) {
                    $(this).prop("checked", "");
                    alert('Choose max. ' + maxAllowed + ' answers!');
                }
            });
        });

        $(document).ready(function () {
            $("input[name='Question2']").change(function () {
                var maxAllowed = 3; 
                var cnt = $("input[name='Question2']:checked").length;
                if (cnt > maxAllowed) {
                    $(this).prop("checked", "");
                    alert('Choose max. ' + maxAllowed + ' answers!');
                }
            });
        });

        $(document).ready(function () {
            $("input[name='Question3']").change(function () {
                var maxAllowed = 3; 
                var cnt = $("input[name='Question3']:checked").length;
                if (cnt > maxAllowed) {
                    $(this).prop("checked", "");
                    alert('Choose max. ' + maxAllowed + ' answers!');
                }
            });
        });

谢谢你的帮助

那么,您只需创建一个最大允许值数组:

var maxAllowed = [2, 3, 3];
并迭代:

for (var i = 0; i < maxAllowed.length; i++) {
    $(document).ready(function () {
        var j = i;
        $("input[name='Question" + (j + 1) + "']").change(function () {
            var cnt = $("input[name='Question" + (j + 1) + "']:checked").length;
            if (cnt > maxAllowed[j]) {
                $(this).prop("checked", "");
                alert('Choose max. ' + maxAllowed[j] + ' answers!');
            }
        });

    });
}
for(变量i=0;imaxAllowed[j]){
$(this.prop(“选中”和“”);
警报('Choose max.+maxAllowed[j]+'answers!');
}
});
});
}

编辑:在我以前的代码中似乎有一个关闭错误。抱歉

您可以简单地创建一个最大允许值数组:

var maxAllowed = [2, 3, 3];
并迭代:

for (var i = 0; i < maxAllowed.length; i++) {
    $(document).ready(function () {
        var j = i;
        $("input[name='Question" + (j + 1) + "']").change(function () {
            var cnt = $("input[name='Question" + (j + 1) + "']:checked").length;
            if (cnt > maxAllowed[j]) {
                $(this).prop("checked", "");
                alert('Choose max. ' + maxAllowed[j] + ' answers!');
            }
        });

    });
}
for(变量i=0;imaxAllowed[j]){
$(this.prop(“选中”和“”);
警报('Choose max.+maxAllowed[j]+'answers!');
}
});
});
}
编辑:在我以前的代码中似乎有一个关闭错误。抱歉

一个可重用的HTML驱动解决方案 我使用了
data-
HTML属性来提供最大价值和可重用的jQuery代码,这些代码可以放在任何需要它的页面上,也可以更改为jQuery插件

这是我使用的HTML 一种可重用的HTML驱动解决方案 我使用了
data-
HTML属性来提供最大价值和可重用的jQuery代码,这些代码可以放在任何需要它的页面上,也可以更改为jQuery插件

这是我使用的HTML
为什么要把这个循环?我不知道你是什么意思?你的代码肯定需要重构,因为每个问题都有重复的行……为什么要把它放在循环中?我不知道你是什么意思?你的代码肯定需要重构,因为你的每个问题都有重复的行…通常你的代码不起作用。我不知道为什么,因为它似乎是好的。我认为引号可能会有一些问题,但它也不起作用:/n通常,您的代码不起作用。我不知道为什么,因为它似乎是好的。我认为引号可能存在一些问题,但它也不起作用:/