限制用户选择的复选框数量

Limiting the number of checkboxes selected by user

本文关键字:复选框 选择 用户      更新时间:2023-09-26

我有一个页面。我有很多复选框。我希望用户在三个复选框中选择,但不超过三个,其中一个复选框的值为"不感兴趣",如果用户单击此复选框,则必须禁用所有其他复选框。如果我尝试了javascript。这就是我尝试的

function chkcontrol(j) {
            var total = 0;
            for (var i = 0; i < document.form1.user[portal_choice].length; i++) {
                if (document.form1.user[portal_choice][i].checked) {
                    total = total + 1;
                }
                if (total > 3) {
                    alert("Please Select only three")
                    document.form1.user[portal_choice][j].checked = false;
                    return false;
                }
            }
        }

我在portalchoice变量中出错。这是用数据库列名映射的,user是我的表名。帮助我做到这一点,并建议我禁用复选框时,用户点击"不干扰"。它不是轨道3.0

感谢朋友的考虑。。。。。。。。。

使用此语法document.form1.user[portal_choice],您告诉Javascript您想要名为"form1"的表单,然后从该表单中获取名为"user"的元素,并查看(Javascript)变量"portal_choice"中包含索引的元素。该变量未在函数中定义。

我不熟悉Ruby,但从一些快速阅读中可以看出,您可以直接在html中引用Ruby变量,但不能在Javascript中引用。我认为你必须用<%= %>这样包装它:

document.form1.user[<%= portal_choice %>].length

但是,我不明白为什么要在这里使用Ruby变量。你只想遍历所有的复选框,对吧?我不认为复选框元素是二维数组,就像一样

document.form1.user[portal_choice][i]

我想你真的只想这么做:

function chkcontrol(j) {
            var total = 0;
            for (var i = 0; i < document.form1.user.length; i++) {
                if (document.form1.user[i].checked) {
                    total = total + 1;
                }
                if (total > 3) {
                    alert("Please Select only three")
                    document.form1.user[j].checked = false;
                    return false;
                }
            }
        }

检查此小提琴