Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带方括号的复选框名称属性的JS语法_Javascript_Arrays_Attributes_Square Bracket - Fatal编程技术网

Javascript 带方括号的复选框名称属性的JS语法

Javascript 带方括号的复选框名称属性的JS语法,javascript,arrays,attributes,square-bracket,Javascript,Arrays,Attributes,Square Bracket,此函数限制用户选择的复选框的数量,但当name属性具有方括号时(即name=baz[]),我很难使其正常工作 出于某种原因,我无法让这段代码在JSFIDLE中工作,但它基于,它有一个工作演示 function chkcontrol(j) { var total = 0; for (var i = 0; i < document.form1.baz.length; i++) { if (document.form1.baz[i].checked) {

此函数限制用户选择的复选框的数量,但当name属性具有方括号时(即
name=baz[]
),我很难使其正常工作

出于某种原因,我无法让这段代码在JSFIDLE中工作,但它基于,它有一个工作演示

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

 <form name="form1">
    <input type=checkbox name="baz[]" value="1" onclick="chkcontrol(0);">Item 1
    <input type=checkbox name="baz[]" value="2" onclick="chkcontrol(1);">Item 2
    <input type=checkbox name="baz[]" value="3" onclick="chkcontrol(2);">Item 3
    <input type=checkbox name="baz[]" value="4" onclick="chkcontrol(3);">Item 4
    <input type=checkbox name="baz[]" value="5" onclick="chkcontrol(4);">Item 5

    <input type=submit value="submit">

</form>
功能chkcontrol(j){
var合计=0;
对于(var i=0;i3){
警报(“请选择最多三个选项”)
document.form1.baz[j].checked=false;
返回false;
}
}
}
项目1
项目2
项目3
项目4
项目5

Chaya,您的问题实际上源于“[]”是名称的一部分

虽然有将表单及其命名元素自动转换为JS可访问对象的规定,但没有规定理解哪些元素是数组,而不是非数组,因为这是服务器端的区别:
?baz[]=1&baz[]=2

如果你要求
form1[“baz[]”
您应该得到一个名为
“baz[]”
的所有元素的列表

从那里,如果你说
form1[“baz[]”[0]您应该获得名为“baz[]”的第一个元素

当然,您可以编写一些解析魔法来自动查找名称中带有“[]”的所有元素,并将“baz”作为表单的数组追加,并填充所有名为“baz[]”的元素。在这一点上,你完全可以做你之前想做的事情

这是否过分取决于你在做什么


但是,在循环中简单地编写
form1[“baz[]”][i]
应该不会比您目前所拥有的花费太多时间。

JQuery是您的一种选择吗?另外,请在属性值周围加引号,并在“onclick”属性内加分号。如果没有有效的html,html中的所有属性都要求在其周围加引号。爱jQuery:-D(我使用的是v.1.8.2)你完全正确,我刚刚纠正了这一点(当我复制别人的代码时,我并不总是注意到这样的错误,所以谢谢你指出这一点;-)@ryan他们真的没有。尤其是html5。如果名称中有空格或字符,在html、http和JS中可能意味着不同的东西,那么就需要决定如何处理它们(重命名更容易)。。。但是,除非你有空格之类的东西,否则引用是可选的,引用所有东西只会增加视觉上的一致性。@Norguard我认为,除非有人给问题html5加上标签,否则他们不会使用它。因此,如果您试图遵守html4.1 strict(并支持强制执行html4.1的浏览器,例如IE7,尽管我知道说IE强制执行标准是一个矛盾的说法),那么他们确实需要引用。这正是我需要的:-我非常感谢!