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

时间:2011-06-03 09:59:40

标签: javascript ruby-on-rails

我有一个页面。我有多个复选框。我希望用户选择三个不超过,一个复选框的值“不感兴趣”,如果用户点击这一切所有其他复选框必须必须禁用。因为我尝试了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;
                }
            }
        }

我在portal_choice变量中收到错误。这是用数据库列名映射的,用户是我的表名。 帮助我这样做并建议我在用户点击“NOT INTERSTED”时禁用该复选框。并且它不是轨道3.0

感谢朋友考虑.........

1 个答案:

答案 0 :(得分:1)

使用这种语法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;
                }
            }
        }

选中此fiddle